我想將2個shell(bash)變量傳遞給awk語句。 在這個例子中,變量是MARKER1和MARKER2如何將BASH shell變量傳遞到AWK語句
[email protected]:/tmp$ echo $marker1
###___showhost___###
[email protected]:/tmp$ echo $marker2
###___showhostset___###
[email protected]:/tmp$
該腳本將提取到的文本文件不同的字符串/標誌($ MARKER1和$ MARKER2)之間的文本的所有行 - file.in
[email protected]:/tmp$ cat file.in
###___showhost___###
Id Name Persona -WWN/iSCSI_Name- Port
115 server5295 VMware 5005638024D3E8E6 1:2:4
116 server5296 VMware 5005638024D3EA86 1:2:4
117 server5297 VMware 5005638024D3F5D2 1:2:4
142 server5302 VMware 5005638024D3E8B6 1:2:4
143 server5303 VMware 5005638024D3E9C6 1:2:4
144 server5304 VMware 5005638024D3F4F2 1:2:4
###___showhostset___###
Id Name Members
0 Mgt_Stack server5295
1 Cluster1 server5302
server5304
[email protected]:/tmp$
如果我運行awk的語句,其中我用實際的字符串變量值MARKER1/MARKER2 ### ___ ___ showhost命令###和### ___ ___ showhostset ###分別而不是使用變量本身的(內awk)我得到一個positiv e結果。但是,我想將awk語句放在bash腳本中,並且需要讀取變量marker1/marker2。
[email protected]:/tmp$ awk '/^###___showhost___###/{flag=1;next}/^###___showhostset___###/{flag=0}flag' file.in
Id Name Persona -WWN/iSCSI_Name- Port
115 server5295 VMware 5005638024D3E8E6 1:2:4
116 server5296 VMware 5005638024D3EA86 1:2:4
117 server5297 VMware 5005638024D3F5D2 1:2:4
142 server5302 VMware 5005638024D3E8B6 1:2:4
143 server5303 VMware 5005638024D3E9C6 1:2:4
144 server5304 VMware 5005638024D3F4F2 1:2:4
[email protected]:/tmp$
但是,當我在awk語句中使用2個變量$ marker1和$ marker2時,我沒有輸出。
[email protected]:/tmp$ awk '/^"'$marker1'"/{flag=1;next}/^"'$marker2'"/{flag=0}flag' file.in
[email protected]:/tmp$
任何幫助,不勝感激!
閱讀手冊頁和/或手冊可以很快得到這些信息 – grail