テキストファイルがあり、次のコマンドで出力を分離したいと思います。
- 連続した繰り返し文字をすべて含む行をすべて印刷します。
- 同じ行の最後または最後の 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が連続して繰り返されないため除外されます。
ベストアンサー1
少し慣れてください。最近の回答同様の質問がある場合:
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
1112266
44778
223334456
6778811
845511