我有一个包含 QR 代码行的文件,我只想grep
为其子序列不增加长度。例子:
这个很好,因为下一个序列与上一个序列更少或相同:
####### ###### ### ### ## # # #
这个是错误的:
### ## ## ### ### ### ###### ##
我是这样开始的:
egrep "[^#](####)+[ ]+(##)+" qr.txt
但后来我意识到这是不可能继续下去的。
答案1
grep -vE '(^| )(#+) .*\2#' <<END
####### ###### ### ### ## # # #
### ## ## ### ### ### ###### ##
END
####### ###### ### ### ## # # #
答案2
和awk
:
awk '{l=length($1);for(i=2;i<=NF;i++){if(length($i)>l){next};l=length($i)}}1' file
l=length($1)
将变量设置l
为第一个字段的长度。for(i=2;i<=NF;i++)
从第二个字段开始循环遍历所有字段。if(length($i)>l
如果该字段的长度大于最后一个字段的长度:next;
跳到下一行。
l=length($i)
设置l
下一次迭代的变量。