Bash 基于模式的Grep
示例文本:Bash 基于模式的Grep,bash,unix,awk,Bash,Unix,Awk,示例文本: This is a test This is aaaa test This is aaa test This is test a This aa is test 我刚刚开始学习unix命令,如grep、awk和sed,并提出了一个快速问题。如果我的文本文件包含上述文本,我如何打印出使用字母“a”2次或更少的行 我尝试使用awk,但不理解语法,无法将“a”的所有实例相加,只打印包含“a”2次或更少次数的行。我理解比较基于awk'$1这样的列的数字吗 kent$ grep -v
This is a test
This is aaaa test
This is aaa test
This is test a
This aa is test
我刚刚开始学习unix命令,如grep、awk和sed,并提出了一个快速问题。如果我的文本文件包含上述文本,我如何打印出使用字母“a”2次或更少的行 我尝试使用awk,但不理解语法,无法将“a”的所有实例相加,只打印包含“a”2次或更少次数的行。我理解比较基于awk'$1这样的列的数字吗
kent$ grep -v 'aaa\+' file
This is a test
This is test a
This aa is test
更新
我刚才看到了评论,如果您的要求是行中的任何地方,无论是否连续,请参见示例(带awk):
使用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
哦,如果我不清楚,很抱歉,我不想删除额外的As,而是只打印包含两行或更少As的行。@user3211189我的错,用grep更新了答案,仅从文件中提取/打印这些行。@user3211189编辑注释(线路上的任何地方)@user3211189查看更新。您也可以查看NF
。@user3211189您在评论中询问了一些问题,但在得到答案后被删除。您可以将您的评论保留在那里吗?这样人们就可以知道发生了什么??2个或更少的连续“a”实例或在线上的任何地方?为什么在发布示例时不这样说,为什么不这样做当有人要求时,我们不会更新它,而你会确认它。-1
用于此。+1用于筛选出3个或更多连续出现的'a'
(我们了解到OP正在查找线路上的任何位置)。
kent$ awk -F'a' 'NF<4' f
1a a
2a
3
awk '!/aaa+/' file
This is a test
This is test a
This aa is test
sed '/aaa\+/d' file
This is a test
This is test a
This aa is test