首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取不包含特定模式的行

如何获取不包含特定模式的行
EN

Stack Overflow用户
提问于 2016-05-30 22:03:25
回答 2查看 86关注 0票数 1

我有一个包含许多行的文件:

代码语言:javascript
复制
ABRD0455252003666
JLKS8568875002886
KLJD2557852003625
.
.
.
AION9656532007525
BJRE8242248007866

我想提取以(ABRD或AION)开头的行,并在第12至14栏中提取数字(003或007)。

输出应该是

代码语言:javascript
复制
KLJD2557852003625
BJRE8242248007866

我尝试过这样做,但是它的命令太长了,我想对它进行优化,以满足性能方面的需要:

代码语言:javascript
复制
 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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-30 22:14:50

-a选项是处理二进制文件的非标准扩展名,文本文件不需要它。

代码语言:javascript
复制
 grep -E '^.{11}(003|007)' file.txt | grep -Ev '^(ABRD|AION)'

第一阶段与第十二列到第十四列中的003007相匹配。

第二阶段过滤掉以ABRDAION开头的任何行。

票数 1
EN

Stack Overflow用户

发布于 2016-05-30 22:14:12

您确实需要阅读regexp教程,但同时尝试如下:

代码语言:javascript
复制
grep -E "^(ABRD|AION).{7}00[37]"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37534131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档