我有一个包含数字和单词的文件,我只需要获取数字:
文件:
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