0

この 2 つの式を 1 つに結合して awk スクリプト ファイルで使用するにはどうすればよいですか?

awk '/select name="op_sys"/,/select>/' build/input.xhtml > build/output.xhtml
awk '/value="/,/">/' build/output.xhtml

編集: awk ファイルの式を次のように変換したいと思います。

#!/usr/bin/awk -f
{
   ...
}
4

2 に答える 2

1

2 つの範囲式をマージするのは危険だと思います。たとえば、2 番目の範囲が最初の範囲の外にある (または部分的に重なっている) 場合はどうなるでしょうか。私は単にパイプを使用します:

< build/input.xhtml awk '/select name="op_sys"/,/select>/' | awk '/value="/,/">/'
于 2012-11-19T21:47:10.780 に答える
1

awkアドレス範囲を簡単にネストすることはできません。フラグを使用して実行できますが、使用する方がはるかに簡単sedです:

sed -n '/pat1/,/pat2/ { /pat3/,/pat4/p }'

pat3と の間 (両端を含む)との間の行pat4のみを出力pat1しますpat2。このような範囲のネストは、出力を 2 番目の呼び出しにパイプするのとまったく同じように動作しないことに注意してください。これは、オーバーラップの処理が異なるためです。

于 2012-11-19T22:30:24.913 に答える