我想将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