Regular-Expression
匹配小於前一個匹配的下一個模式
我有一個帶有 QR 碼行的文件,我只想
grep
為那些其子序列長度不增加的文件。例子:這個很好,因為下一個序列與前一個序列更少或相同:
####### ###### ### ### ## # # #
這個是錯的:
### ## ## ### ### ### ###### ##
我是這樣開始的:
egrep "[^#](####)+[ ]+(##)+" qr.txt
但後來我意識到這將是不可能的繼續..
grep -vE '(^| )(#+) .*\2#' <<END ####### ###### ### ### ## # # # ### ## ## ### ### ### ###### ## END
####### ###### ### ### ## # # #
與
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
變數。