rpm.txt
:
Augsburg\n
Bremen\n
Friedrichshafen\n
Aschersleben\n
Bernburg\n
Berlin\n
Halle\n
Essen\n
Furtwangen\n
Kehlen\n
Krumbach\n
Osnabrueck\n
Kempten\n
我的命令:
cat rpm.txt | grep '[^a]'
尽管我已使用grep过滤了所有a
项的内容,但返回的文本未更改,为什么?
答案 0 :(得分:1)
正则表达式中要搜索的模式[^ a]表示该字符设置了除小写字母a之外的所有字符。当您搜索该字符集时,会得到该字符集中具有任何字符的任何行。本质上,您搜索的是除小写字母a之外具有任何字符的任何行。 因此,如果rpm.txt如下
a
aaaaaa
aaaa aaaa
aaaaaaaa1
Augsburg
您的结果应该是
aaaa aaaa
aaaaaaaa1
Augsburg
第一行和第二行只有小写字母a,第三行有空格,第四行有1,最后一行没有小写a。
答案 1 :(得分:0)
您的命令没有错。要了解为什么它不起作用,您首先需要了解regex
。
您基本上要做的是grep
并非小写字母a
的所有内容。这意味着,如果您添加-o
选项,它将删除该字符。
如果要删除小写字母a
的城市,则必须限制包含a
的行。为此,您将必须使用字符^
和$
,它们分别是行的开头和行的结尾。此外,您将必须在*
之后添加[^a]
,这意味着字符序列可以包含0..N个字符(其中N> = 0),但不能包含a
。 / p>
grep '^[^a]*$' rpm.txt
ps。
您可以使用选项--color=auto
。这将以红色显示“抓住”了哪些字符。否则,请尝试使用诸如regex101.com之类的网站。