我有一个文件,其中的列由分隔符分隔(在本例中为空格)。
打印我使用的列,
awk ' { print $1 "," $3 } filename
这将打印以逗号分隔的第1列和第3列。
现在我想发送$1 "," $3
作为参数。所以我可以把它改成像$1 "-" $3
这样的东西,我也应该能够像$1 "," $2 "-" $3
一样改变参数的数量。
目标是动态传递字段和分隔符,即,awk命令将在一个文件中,模式应作为参数传递。是否可能
例如。
trigger.sh
#!/bin/bash
var="\$1\"\,\"\$2" #this is $1","$2
sh test.sh $var
test.sh
#!/bin/bash
awk -v var="$1" ' { print var}' data.dat
data.dat包含实际数据
但我无法获得所需的输出。
输出:
awk: warning: escape sequence `\,' treated as plain `,'
$1","$2 --> printing this instead of columns
答案 0 :(得分:0)
我想动态传递参数/变量值。我找到了一种方法。
Str="awk ' { print "
t="\$1\",\"\$2 } ' "
# above expression will be passed as an argument and will be assigned to variable t
Str="$Str""$t""data.dat"
echo "$Str"
现在这个字符串Str的值如下所示
awk ' { print $1","$2" } ' data.dat
现在我们需要做的就是
eval $Str
这个解决方案对我来说非常好。