将打印模式作为变量传递给 awk

g4u*_*r4v 5 shell ksh awk

我正在尝试使用awk,.分隔的行中的各个列打印变量 。我要打印的列和模式存储在另一个变量中b。图案a和印刷图案b如下:

a='15986327,415532694,850257614,875121642,20140819'
b='$1","$2","$4'
Run Code Online (Sandbox Code Playgroud)

我正在尝试获得如下输出。

15986327,415532694,875121642
Run Code Online (Sandbox Code Playgroud)

我正在尝试b使用-vswitch将模式传递给 awk,但不确定如何在printinside 中使用它awk。尝试了下面的命令,但这不是我想要的输出。

echo $a |awk -v ba="${b}" -F"," '{print ba}'
$1","$2","$4

echo $a |awk -v ba="${b}" -F"," '{print $ba}'
15986327,415532694,850257614,875121642,20140819
Run Code Online (Sandbox Code Playgroud)

cuo*_*glm 6

您不需要使用 variable ba,请尝试:

$ echo $a | awk -F',' '{print '"$b"'}'
15986327,415532694,875121642
Run Code Online (Sandbox Code Playgroud)

有了这个,$b由外壳扩展,而不是由awk. 其余的awk语句不受影响,因为它们用单引号括起来。