部分文字列を含む単語全体を抽出するには?

部分文字列を含む単語全体を抽出するには?

次のファイルがある場合:

example.png example.jpg example2.jpg example2.png example.swf
example2.swf example3.jpg example4.jpg example3.png example3.swf 

たとえば、swfを含む単語を抽出したい場合、出力は次のようになります。

example.swf 
example2.swf
example3.swf

試してみましたが、grep -o "swf[^[:space:]]*"ただたくさん印刷され、swfその後試してみましたが、grep -o '[^ ]*a\.swf[^ ]*'出力がほとんどありません。ワイヤー「swf」が含まれています。何をすべきかを知っている人はいますか?

答え1

GNU grepを使用してください:

grep -o '\b\w*\.swf\b' file

出力:

example.swf
例2.swf
例3.swf

\b:幅0の単語境界

\w: 単語文字

\.:ポイントと一致


望むより:スタックオーバーフロー正規表現に関するよくある質問

答え2

あなたはできます:

grep -o '[^ ]*\.swf' file.txt
  • [^ ]*ゼロ個以上の空白以外の文字と一致します。

  • \.swf文字通りの意味と一致.swf

例:

% grep -o '[^ ]*\.swf' file.txt
example.swf
example2.swf
example3.swf

答え3

最初のステップ

スペースを行末に置き換えるには、次のコマンドを使用します。sed

ステップ2

フィルタ出力の使用grep

はい

sed -e s/\ /\\n/g file | grep .swf

関連情報