文字列を検索し、同じawkコマンドで切り取ります。

文字列を検索し、同じawkコマンドで切り取ります。

ファイルがありますabc.txtこのような資料があります -

abc pqr testing, xyz=a432j42jjk4, key=124

abc pqr testing, xyz=jkl234j54nn, key=567
abc pqr testing, xyz=2395hdshkw4, key=3232


abc pqr testing, xyz=abc424729hh, key=7676
abc pqr testing, xyz=70700ghgh99, key=12342

私はawkを使って次のような「xyz」テキストを検索しています。

awk -F"xyz=" '{print $2}' abc.txt | awk '{print $1}'

これは私に新しいラインで出力を与えます -

a432j42jjk4,

jkl234j54nn,
2395hdshkw4,


abc424729hh,
70700ghgh99,

awkから改行文字を削除しながら出力を取得できるショートカットやトリックを探しています。

ベストアンサー1

GNU を使用してgrep以下を実装します。

$ grep -o -P '(?<=\bxyz=)[^,]+,' abc.txt 

grep与えられた正規表現に一致する行を印刷します。行-oの一致部分のみを印刷するように定義します。正規表現は-PPerl正規表現として解釈され、より多くのオプションを提供します。

正規表現は次のように言います。

  • ,()ではなく、[^,]+次に終わる他の文字を探してください。,
  • xyz= (?<=\bxyz=)これらの連続する文字は、正数と呼ばれるaの後になければなりません。後ろを見て)。私たちは\bgrepやそれに似たものをしないようにします。booxyz=

おすすめ記事