在awk中使用变量替换的简单值不起作用

时间:2016-12-27 13:19:12

标签: awk

有这条线

Doc=$(awk '/1516001/ { print substr($0,15,11) }' /home/data.txt)  

想要用变量更改1616001。

例如:

Var='1516001'
Doc=$(awk '/$Var/ { print substr($0,15,11) }' /home/data.txt)  

但它不起作用

2 个答案:

答案 0 :(得分:0)

您可以使用awk -v

Var='1516001'
Doc=$(awk -v pat="$Var" ' $0~pat{ print substr($0,15,11) }' /home/data.txt) 

答案 1 :(得分:0)

@Pedro,在awk中,变量的值不像shell的变量那样工作,所以我们必须将shell变量的值赋给awk的变量,然后使用它。

Doc=$(awk -vvar="$Var" '{if($0 ~ var){print substr($0,15,11)} }' /home/data.txt) 

如果这有助于您,请告诉我。