ファイル内で繰り返される部分文字列の検索

ファイル内で繰り返される部分文字列の検索

possible与えられた入力ファイルからパターンで始まる文字列が繰り返し表示されることを検索したいと思います。

  • 入力例:
    this is the best possible solution
    possible1234 solution!!!
    possible5678 solution!!!
    possible5678 solution!!!
    possible0000 solution!
    possible0000 solution!
    There should be some "possible7777" solution!
    There should be some "possible7777" solution!
    
  • 希望の出力:
    possible5678 solution!!!
    possible0000 solution!
    There should be some "possible7777" solution!
    
    possibleNNNNこれは、ファイル内で複数回発生するパターンマッチングであるためです。

ベストアンサー1

これは特定の問題に対する考えられる解決策を提供する。質問に対するさまざまな修正:

<your-file grep '^possible[[:digit:]]' | sort | uniq -d

で始まる重複行を語彙的にソートしたリストを提供しますpossible<digit>

  • greppossibleで始まり、その後に少なくとも1つの数字が続く行を選択します。
  • sort重複した項目が隣接するように結果を並べ替えます(必須uniq)。
  • uniq -d重複として報告されました。

GNUの実装または互換性をpossible<digits>想定して入力内のすべての項目を一致させるには、次の手順を実行します。grep

<your-file grep -Po 'possible\d+' | sort | uniq -d

次のように入力すると:

おそらく123私はxxですおそらく123うん

これにより、以下が提供されます。

possible123

重複エントリを含むすべての一意の行の場合possible<digit>

perl -lne 'if (/possible(\d+)/) {
             $count{$1}++;
             $lines{$1}->{$_}++;
           }
           END{
             for $k (grep {$count{$_} > 1} keys %count) {
               print for keys %{$lines{$k}}
             }
           }' < your-file

次のように入力すると:

this is the best possible solution
possible1234 solution!!!
possible5678 solution!!!
possible5678 solution!!!
possible0000 solution!
impossible0000 other solution!

それは以下を提供します:

possible0000 solution!
impossible0000 other solution!
possible5678 solution!!!

(与えられた行が互いに隣にあること以外は定義されpossibleXXXXた順序はありません)。

おすすめ記事