前の一致より小さい次のパターンと一致します。

前の一致より小さい次のパターンと一致します。

grepサブシーケンスのみを指定したいQRコード行を含むファイルがあります。長さが伸びません。例:

次のシーケンスが前のシーケンスより小さいか等しいので、これは良いです。

####### ###### ### ### ## # # #

これは間違っています:

### ## ## ### ### ### ###### ##

これが私が始めた方法です。

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++)2番目のフィールドから始めて、すべてのフィールドを繰り返します。
  • if(length($i)>lこのフィールドの長さが最後のフィールドの長さより大きい場合:
    • next;次の行に移動します。
  • l=length($i)l次の繰り返しのための変数を設定します。

関連情報