我有一個單獨的文件,其中包含第一個和第二個列,其中包含項目代碼和名稱,然後是第三個列到第十二個列,其中包含連續10天的消耗數量。 現在我需要將它轉換成10個不同的文件。在每個第一和第二欄應該是相同的項目代碼和項目名稱和第三列將包含在每一天的消費量..awk命令使用for循環打印多列
輸入文件:
Code | Name | Day1 | Day2 | Day3 |...
10001 | abcd | 5 | 1 | 9 |...
10002 | degg | 3 | 9 | 6 |...
10003 | gxyz | 4 | 8 | 7 |...
我需要的輸出在不同的文件作爲
文件1:
Code | Name | Day1
10001 | abcd | 5
10002 | degg | 3
10003 | gxyz | 4
文件2:
Code | Name | Day2
10001 | abcd | 1
10002 | degg | 9
10003 | gxyz | 8
文件3:
Code | Name | Day3
10001 | abcd | 9
10002 | degg | 6
10003 | gxyz | 7
等等....
我寫了這樣的
awk 'BEGIN { FS = "\t" } ; {print $1,$2,$3}' FILE_NAME > file1;
awk 'BEGIN { FS = "\t" } ; {print $1,$2,$4}' FILE_NAME > file2;
awk 'BEGIN { FS = "\t" } ; {print $1,$2,$5}' FILE_NAME > file3;
等代碼...
現在我需要寫在'for'或'while'循環中,這會更快...
我不知道確切的代碼,可能是這樣的..
for ((i=3; i<=NF; i++)) ; do awk 'BEGIN { FS = "\t" } ; {print $1,$2,$i}' input.tsv > $i.tsv; done
好心幫我得到的輸出作爲我解釋。
你混合殼和awk。 ..單獨使用awk .. https://www.gnu.org/software/gawk/manual/html_node/For-Statement.html – Sundeep
對不起,我不知道區分awk和shell。如果可能,請直接告訴我代碼以獲取該輸出。 @Sundeep –
看看早先評論中的文檔鏈接的語法...你只需要將其移動到awk中的循環中...試試看吧 – Sundeep