繰り返される文字のみを含む行をすべて削除するには?

繰り返される文字のみを含む行をすべて削除するには?

たとえば、

22111155
44788
56667775
aannmmmm88
66h1122
PPDd88

出力は次のようになります。

44788      # 7 is not repeated
66h1122    # letter h is not repeated 
PPDd88     # letters D or d are not repeated

同じ行の文字が複数回繰り返されるすべての行を削除します。

同じ行に繰り返されない文字がある場合、その行だけが印刷されます。

ベストアンサー1

そしてperl

perl -ne 'my %count;
          $count{$_}++ for /./g;
          print if grep {$_ == 1} values %count'

そしてsed

sed '
/./!d;h;s/$/\
/
:1
  s/\(.\)\(.*\)\1\(.*\n\)/\2\3\1/
  s/\(.\)\1*\(.*\n.*\1\)/\2/
t1
/^\n/d;g'

パターン空間を2行に分割します。文字を繰り返すと、ループは2行目に移動します。最後の最初の行が空でない場合は、レコードを印刷します。

おすすめ記事