3

私はこのawk スクリプトを持っていますが、

/regex2/{
var = $1}

/regex1/{
print var}

入力ファイルに対して実行したもの:

regex1

This should be assigned as variable regex2

印刷出力がありません。望ましい出力は、「これ」を印刷することです。

次に、BEGIN を利用することを考えるかもしれません。

BEGIN{
/regex2/
var = $1}

/regex1/{
print var}

しかしどうやら BEGIN は正規表現マッチング機能に対応できません。これに対する提案はありますか?

4

2 に答える 2

4

これにより、望ましい結果が得られます。

awk '/regex2/ { print $1 }'

それ以外の場合は、ファイルを 2 回読み取り、次のような操作を実行する必要があります。/regex2/inの最後の出現を保存しvarます。ファイルを再読み込みすると、var出現するたびに出力され/regex1/ます。出力に空の行が表示され、改行にキーワード「This」が表示されることに注意してください。

awk 'FNR==NR && /regex2/ { var = $1; next } /regex1/ { print var }' file.txt{,}
于 2012-09-30T07:19:08.167 に答える
0

通常、この種のことはフラグで行われます。

/regex1/ { f = 1 }
f && /regex2/ { var = $1; f = 0 }
于 2012-10-01T16:22:42.730 に答える