指定された行だけを印刷する方法は?

指定された行だけを印刷する方法は?

次のコマンドでテキストファイルの出力を指定したいと思います。

  1. 連続して繰り返されるすべての文字を含むすべての行を印刷します。
  2. 同じ行の最後または最後の 2 文字を除き、連続して繰り返されるすべての文字を含むすべての行を印刷します。
  3. 同じ行の最初または最初の 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

ベストアンサー1

おすすめ記事