2013-10-17 111 views
0

我正嘗試使用bash和awk以及嵌套的for循環將數據打印到彼此旁邊的列中。 到目前爲止,這是我所:使用bash和awk打印到新文檔中的特定列

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 

基本上,所有的52S在第一列,第四列中的64S,60年代在第七列

回答

1

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

printf是許多語言通用的打印格式化程序函數。 %s告訴它第一個參數應該是一個字符串。

請注意,awk將不會從shell中獲得$k,因此您需要添加-v k=$k

+0

這給了我一個錯誤..但你能解釋一下這些術語是什麼意思嗎?我認爲與解釋它可能會幫助我更好地理解它 – user2883071

+0

它給你什麼錯誤? – Kevin

+0

awk:(FILENAME = all.csv FNR = 21910)fatal:沒有足夠的參數來滿足格式字符串 '%s' – user2883071