合并awk表达式

时间:2012-11-19 21:41:37

标签: shell awk

如何将这两个表达式合并为一个用于awk脚本文件?

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

修改 我想将awk文件中的表达式转换为:

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

2 个答案:

答案 0 :(得分:1)

我认为合并两个范围表达式会很危险。例如,如果第二范围出现在第一范围之外(或部分重叠)怎么办?我只想用一根烟斗:

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

答案 1 :(得分:1)

awk不允许容易嵌套地址范围。您可以使用标记来执行此操作,但使用sed更简单:

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

仅在pat3pat4内打印pat1pat2(含)之间的行。请注意,像这样的嵌套范围与将输出管道连接到第二次调用的行为完全不同,因为重叠将被区别对待。