ファイルがあります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
の一致部分のみを印刷するように定義します。正規表現は-P
Perl正規表現として解釈され、より多くのオプションを提供します。
正規表現は次のように言います。
,
()ではなく、[^,]+
次に終わる他の文字を探してください。,
xyz=
(?<=\bxyz=)
これらの連続する文字は、正数と呼ばれるaの後になければなりません。後ろを見て)。私たちは\b
grepやそれに似たものをしないようにします。booxyz=