我有一个包含许多行的文件:
ABRD0455252003666
JLKS8568875002886
KLJD2557852003625
.
.
.
AION9656532007525
BJRE8242248007866我想提取以(ABRD或AION)开头的行,并在第12至14栏中提取数字(003或007)。
输出应该是
KLJD2557852003625
BJRE8242248007866我尝试过这样做,但是它的命令太长了,我想对它进行优化,以满足性能方面的需要:
egrep -a --text '^.{12}(?:003|007)' file.txt > result.txt |touch results.txt && chmod 777 results.txt |egrep -v -a --text "ABRD|AION" result.txt > result2.text发布于 2016-05-30 22:14:50
-a选项是处理二进制文件的非标准扩展名,文本文件不需要它。
grep -E '^.{11}(003|007)' file.txt | grep -Ev '^(ABRD|AION)'第一阶段与第十二列到第十四列中的003或007相匹配。
第二阶段过滤掉以ABRD或AION开头的任何行。
发布于 2016-05-30 22:14:12
您确实需要阅读regexp教程,但同时尝试如下:
grep -E "^(ABRD|AION).{7}00[37]"https://stackoverflow.com/questions/37534131
复制相似问题