grepが次のスペースまで一致する単語を表示しないのはなぜですか?

grepが次のスペースまで一致する単語を表示しないのはなぜですか?

ファイルがあり、完全な単語ではなくパターンに一致する唯一の単語がtemp必要です。grep試してみましたが、grep -o <pattern> file目的の結果は出ませんでした。

入力する

xi29 vddf vss vddf vss int_s s2 rstb mg91a02_l_nd2_bulk_vt1 ln1=16n ln2=16n lp1=16n lp2=16n nf_n1=1 nf_n2=1 nf_p1=1 nf_p2=1  
xi28 vddf vss vddf vss d1 d mg91a02_l_inv_bulk_vt1 ln=16n lp=16n nf_n=1 nf_p=1 nfin_n=2 nfin_p=2 m=1  
xi25 vddf vss vddf vss int_m2 int_m1 mg91a02_l_inv_bulk_vt1 ln=16n lp=16n nf_n=1 nf_p=1 

注文する

grep -o 'mg91a02' temp

出力(インポート)

mg91a02
mg91a02
mg91a02

出力(必須)

mg91a02_l_nd2_bulk_vt1
mg91a02_l_inv_bulk_vt1
mg91a02_l_inv_bulk_vt1

ベストアンサー1

努力する

 grep -E -o 'mg91a02\w+' 

どこ

  • -E: 拡張正規表現
  • -o 一致する単語のみを印刷
  • \w:言葉文字(英数字または下線、同義語[_[:alnum:]])。
  • +1回以上

空白以外の文字の場合は、@コメントに基づいて文字列をキャプチャするには\S(略語[^[:space:]])を参照してください。

grep -E -o 'mg91a02\S+'

OPの編集済み入力を使用すると、結果は次のようになります。

mg91a02_l_inv_bulk_vt1
mg91a02_l_nd2_bulk_vt1
mg91a02_l_nd2_@bulk!_vt1
mg91a02_l_nd2_[bulk]_vt1
mg91a02_l_inv_bulk_vt1

-o\wおよびは\S非標準拡張子です。

おすすめ記事