2012-11-19 57 views
0

如何將這兩個表達式合併爲一個用於awk腳本文件中的表達式?合併awk表達式

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

編輯: 我想變換表達式在AWK文件看起來像:

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

回答

1

我認爲合併這兩個範圍表達式將是危險的。例如,如果第二範圍出現在第一範圍之外(或部分重疊)又會怎樣?我會簡單地使用管道:

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

awk不允許地址範圍可以很容易地嵌套。你可以用國旗做,但它更易於使用sed

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

將僅限於pat1pat2打印pat3pat4(含)之間的線路。請注意,像這樣的嵌套範圍並不像將輸出傳遞給第二個調用那樣精確,因爲重疊將被區別對待。