スペースと句読点が続くアルファベットを grep で検索するにはどうすればよいでしょうか?

スペースと句読点が続くアルファベットを grep で検索するにはどうすればよいでしょうか?

私はというラインを持っています

10909101 - testingName - Log8767, File787 - 8:50PM  

testingNameここで、grep を使用して出力を取得したいと思います。

最初の数字は桁数が異なる場合があり (別の行が12最初の数字になっている場合もあります)、数字ベースの grep は使用できません。どうすれば解決できるでしょうか?

答え1

すべてのデータが同一フォーマットになることを考えると、grepはこれに適したツールではありません。 は確かに使用可能ですが、使用するのは場当たり的です。 これはgrep設計された目的ではなく、 のほうがはるかに優れたツールですawk

区切り文字は常に「スペース、ダッシュ、スペース」のシーケンス、つまり になるため-、次のようにすることができます。

$ awk -F' - ' '{print $2}' <filename>

<filename>は検索するデータを含むファイルの名前で、ファイル全体のすべての行が 2 番目のエントリだけに切り詰められます。3 文字の区切り文字を使用したくない場合は、次のようにします。

$ awk -F- '{print $2}' | tr -d ' '

これは、スペースを含む最初の文字列から-2 番目の文字列までのすべてを取得し、 でスペースを削除しますtr。もちろん、ファイル名にスペースが含まれている場合は問題が発生するため、最初の例に従う必要があります。

答え2

これはのインスタンスですgrepが、純粋なgrep

echo '10909101 - testingName - Log8767, File787 - 8:50PM  ' | \
grep -o '\- [[:alpha:]]* \-' | grep -o '[[:alpha:]]*'

出力:

testingName

関連情報