使用bash和awk打印到新文档中的特定列

时间:2013-10-17 14:42:55

标签: bash variables loops awk

我正在尝试使用bash和awk以及嵌套的for循环将数据打印到彼此相邻的列中。 到目前为止,这就是我所拥有的:

for k in {1..147..3}
do
for i in "52" "64" "60" "70" "74"
do
        awk -v x="${i}" -F, 'match ($0,x) { print $k }' all.csv > final.csv
done
done
echo "script has run"

我需要将信息打印到新文件中的列k中。但是这不起作用。 所以在csv文件中数据是这样的:

52,9/05,6109
52,9/06,6119
64,9/05,7382
64,9/06,7392
64,9/07,3382
60,9/06,3829
...

我希望我的输出像这样:

52,9/05,6109,64,9/05,7382,60,9/06,3829
52,9/06,6119,64,9/06,7392
,,,64,9/07,3382

基本上,第一列中的所有52个,第四列中的64个,第七列中的60个

1 个答案:

答案 0 :(得分:1)

而不是print $k,请使用printf "%s,",$k

printf是许多语言共有的打印格式化程序函数。 %s告诉它第一个参数应该是一个字符串。

请注意,awk无法从shell中获取$k,因此您需要添加-v k=$k