パターンに一致する隣接行の削除

パターンに一致する隣接行の削除

入力:ソートされた行を持つファイル

出力:すべての数字を削除すると、ファイルに隣接する行に一致する「一意の」行が含まれます。

はい

入力する

abbylove2007
abbylove2008
abbylove2012
AbbyLove2014
abby1994lover
abby2007lover
abbylovesaal2018
abbylovesbsb2003

出力

abbylove2007
abby1994lover

abbylove\d+ と abby\d+lover に一致する複数の隣接行があるため、abbylove2007 と abby1994lover が残ります。

ベストアンサー1

$ awk '{ curr=$0; gsub("[0-9]","",curr) } curr != prev { prev=curr; prevfull=$0; flag=0; next } !flag { print prevfull; flag=1 }' test
abbylove2007
abby1994lover

まず、現在の行から数字を削除します。数値を削除した後、この結果が前の行と異なる場合は、前の行をこの行に更新し、前の行全体を記憶し、変数をflag0に設定してから次の行を続行します。

flagこの変数は、前の行と同じ行を出力するときに使用されます。最初これらのライン。

前の行と同じ行(番号の削除)の場合、フラグが設定されていない場合は、前の行全体を印刷してからフラグを設定します。

おすすめ記事