從製表符分隔的文件中提取。我試圖根據列4中的唯一值提取所有行,然後將其保存爲CSV。但是,我想提取第4列中的所有不同值並將它們一次保存爲CSV。AWK命令從列中提取不同的值
我可以使用此命令提取一個值:
awk -F $'\t' '$4 == "\"C333\"" {print}' dataFile > C333.csv
從製表符分隔的文件中提取。我試圖根據列4中的唯一值提取所有行,然後將其保存爲CSV。但是,我想提取第4列中的所有不同值並將它們一次保存爲CSV。AWK命令從列中提取不同的值
我可以使用此命令提取一個值:
awk -F $'\t' '$4 == "\"C333\"" {print}' dataFile > C333.csv
讓我們看看這個測試文件:
$ cat in.csv
a b c d
aa bb cc d
1 2 3 4
12 23 34 4
A B C d
現在,讓我們寫每一行是一個製表符分隔的輸出文件以第四列命名:
$ awk -F'\t' '{f=$4".csv"; print>>f; close(f)}' OFS='\t' in.csv
$ cat d.csv
a b c d
aa bb cc d
A B C d
$ cat 4.csv
1 2 3 4
12 23 34 4
但是這會在每行打印後關閉文件。關閉「END」塊中的文件會不會更有效率? – user000001
在將awk程序應用到第四個字段之前,可以先排序源數據文件。 –
@ user000001這將是有效的,但不可靠。使用大型輸入文件時,很容易達到打開文件數量的限制。因爲我已經讓OP在他們的真實數據上測試代碼時報告了這個問題,所以我傾向於選擇可靠性而不是速度。 – John1024
哦哇,這是第16000個'awk'標記的問題! –