2016-09-18 15 views
0

從製表符分隔的文件中提取。我試圖根據列4中的唯一值提取所有行,然後將其保存爲CSV。但是,我想提取第4列中的所有不同值並將它們一次保存爲CSV。AWK命令從列中提取不同的值

我可以使用此命令提取一個值:

awk -F $'\t' '$4 == "\"C333\"" {print}' dataFile > C333.csv 
+1

哦哇,這是第16000個'awk'標記的問題! –

回答

2

讓我們看看這個測試文件:

$ 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 
+0

但是這會在每行打印後關閉文件。關閉「END」塊中的文件會不會更有效率? – user000001

+0

在將awk程序應用到第四個字段之前,可以先排序源數據文件。 –

+1

@ user000001這將是有效的,但不可靠。使用大型輸入文件時,很容易達到打開文件數量的限制。因爲我已經讓OP在他們的真實數據上測試代碼時報告了這個問題,所以我傾向於選擇可靠性而不是速度。 – John1024