示例文字:
This is a test
This is aaaa test
This is aaa test
This is test a
This aa is test
我刚开始学习像grep,awk和sed这样的unix命令,并且有一个简单的问题。如果我的文本文件包含上述文本,我怎么能打印出使用字母“a”2次或更少次的行。
我尝试使用awk,但是不理解语法来添加'a'的所有实例并且只打印'a'次数为2次的行。我理解根据awk'$ 1< = 2'等列来比较数字,但不知道如何将它与字符一起使用。任何帮助,将不胜感激。
基本上它应该打印出来:
This is a test
This is test a
This aa is test
对于Clarity:我不想删除额外的As,而只打印包含两个或更少As的行。
答案 0 :(得分:2)
kent$ grep -v 'aaa\+' file
This is a test
This is test a
This aa is test
我刚看到评论,如果您的要求任何地方,无论是否连续,请参阅示例(使用awk):
kent$ cat f
1a a
2a
3
4a a a aa
5aaaaaaaaaa
kent$ awk 'gsub(/a/,"a")<3' f
1a a
2a
3
gsub
:kent$ awk -F'a' 'NF<4' f
1a a
2a
3
答案 1 :(得分:2)
使用awk
awk '!/aaa+/' file
This is a test
This is test a
This aa is test
不要同时打印三个或更多a
行。
与sed
sed '/aaa\+/d' file
This is a test
This is test a
This aa is test
sed
的默认值是打印所有行。 /aaa\+/d
告诉sed
删除包含3个或更多a