如何将这两个表达式合并为一个用于awk脚本文件?
awk '/select name="op_sys"/,/select>/' build/input.xhtml > build/output.xhtml
awk '/value="/,/">/' build/output.xhtml
修改 我想将awk文件中的表达式转换为:
#!/usr/bin/awk -f
{
...
}
答案 0 :(得分:1)
我认为合并两个范围表达式会很危险。例如,如果第二范围出现在第一范围之外(或部分重叠)怎么办?我只想用一根烟斗:
< build/input.xhtml awk '/select name="op_sys"/,/select>/' | awk '/value="/,/">/'
答案 1 :(得分:1)
awk
不允许容易嵌套地址范围。您可以使用标记来执行此操作,但使用sed
更简单:
sed -n '/pat1/,/pat2/ { /pat3/,/pat4/p }'
仅在pat3
和pat4
内打印pat1
和pat2
(含)之间的行。请注意,像这样的嵌套范围与将输出管道连接到第二次调用的行为完全不同,因为重叠将被区别对待。