我正在尝试使用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个
答案 0 :(得分:1)
而不是print $k
,请使用printf "%s,",$k
。
printf
是许多语言共有的打印格式化程序函数。 %s
告诉它第一个参数应该是一个字符串。
请注意,awk
无法从shell中获取$k
,因此您需要添加-v k=$k
。