egrep 在包含数字和单词的文件中查找不以 91 或 93 开头的数字

egrep 在包含数字和单词的文件中查找不以 91 或 93 开头的数字

我有一个包含数字和单词的文件,我只需要获取数字:

文件:

ASCII
Baron
Cbada
Dbadal
ebadals
Abadessa
Abadesses
Abadia
Abarca
jbarques
Zbat
Abdalong
Rbdies
Abdon
Abel
ibelard
Abell
Abella
Abellan
Abellana
quebellanes
370
410
1
12
123
1234
12345
123456
1234567
12345678
123456789
87654321
7654321
654321
54321
4321
321
21
937895432
938965432
930895432
913769890
916767800
91676780
977895432

如果我这样做,egrep "\b[^9][0-9]+"我就不会得到以 97 开头的那个。

显然"\b[^91][0-9]+"不要显示以 9 或 1 开头的数字。

如果我这样做,egrep -v "\b9[13]"我就会得到我不想要的词语......

答案1

尝试这个:

<file egrep '^[0-9]+' | egrep -v '^9(1|3)'

或者

egrep -v '^9(1|3)|[[:alpha:]]' file

-v, --invert-match
       反转匹配的方向,以选择不匹配的行。

答案2

是的,感谢@QuickishFM 的评论,我想出了这个解决方案:

egrep -v "\b9[13]" file | egrep "[0-9]+"

谢谢

答案3

使用grep -P( PCRE) 进行负向预测,以确保行不以91或开头93

grep -P  '^(?!9[13])[0-9]+$' file
370
410
1
12
123
1234
12345
123456
1234567
12345678
123456789
87654321
7654321
654321
54321
4321
321
21
977895432

相关内容