次のコマンドでテキストファイルの出力を指定したいと思います。
- 連続して繰り返されるすべての文字を含むすべての行を印刷します。
- 同じ行の最後または最後の 2 文字を除き、連続して繰り返されるすべての文字を含むすべての行を印刷します。
- 同じ行の最初または最初の 2 文字を除き、連続して繰り返されるすべての文字を含むすべての行を印刷します。
例:
11122323 1112266 44778 223334456 6778811 845511 3357788
出力は
1112266 >>>>> All repeated characters.
44778 >>>>> All repeated except the last character.
223334456 >>> All repeated except the last two characters
6778811 >>>> All repeated except the first character.
845511 >>>> All repeated except the first two characters.
文字の非連続的な反復は許可されますが、行の先頭または末尾から最初または2番目の文字でのみ可能です。最初の行は連続して繰り返されないので除外されます3
。
次のコマンドを試しましたが連続していない繰り返し文字も検索します。
awk '
{split ("", N) # delete N array
P = 1 # reset boolean L used for print decision
L = length
for (i=1; i<=L; i++) N[substr($0, i, 1)]+=((i<3)||(i>L-2))?2:1 # calculate char count; doubly weigh leading/trailing
for (n in N) if (N[n] < 2) {P = 0 # for non-duplicate chars: set print decision
break # and quit the for loop
}
}
P # print if non-duplicate chars exist only at margins
' file