0

如何将这两个表达式组合成一个以在 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

我认为合并两个范围表达式会很危险。例如,如果第二个范围出现在第一个范围之外(或部分重叠)怎么办?我会简单地使用管道:

< 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 }'

将仅在and内打印pat3and pat4(包括)之间的行。请注意,像这样的嵌套范围与将输出传递到第二次调用的行为并不完全相同,因为重叠的处理方式将有所不同。pat1pat2

于 2012-11-19T22:30:24.913 回答