0

我正在尝试将 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

4

1 回答 1

1

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

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

请注意,这awk不会$k从 shell 中获取,因此您需要添加-v k=$k.

于 2013-10-17T14:50:06.387 回答