2015-03-13 30 views
1

我想解決一個通用腳本獲取選項卡分隔的列值(作爲文件頭)。通過awk分離對於獲取列名是很好的。我不明白如何讓每個製表符分隔值直到結束或最後一個NF(如果使用awk)。列的文件是不是在固定的數量,有時它可能會拿出20列,有時也可能是100,等等 對於例如:文件中的製表符分隔欄是 -解析選項卡unix中的文件標頭分隔

abc ttr nnc r32 inc ... 

如果我編寫一個簡單的AWK爲:

head -1 file | awk 'BEGIN {NF="\t"} {print $1,$2, etc} 

它會呈現我通過$ I替換$ 1,$ 2等試圖增量版本由$ 1,$ 2等代表的每個製表符分隔的列,但不會工作。

對此的任何想法?

+1

你想達到什麼?你試過'awk'BEGIN {NF =「\ t」} {for(i = 1; i <= NF; i ++)print $ i}' – 2015-03-13 06:24:54

+0

感謝Avinash的回覆, 我已經試過了,適當的結果。有些列是空格分開,也就像「電話號碼」,在這種情況下,它不應該分開這兩個也因爲我的NF已經是「\ t」,但它是這樣做的。 – knowone 2015-03-13 06:35:28

回答

1

如果我理解正確,你問的是如何遍歷從1到NF的字段。這是一個這樣的循環的例子:

$ head -1 file | awk -F"\t" '{for (i=1;i<=NF;i++)printf "%s ",$i; print"";}' 
abc ttr nnc r32 inc 
+0

謝謝約翰,這是我想要的。猜猜我沒有正確使用printf。 – knowone 2015-03-13 06:38:56

+0

@habe很高興爲你效勞。 – John1024 2015-03-13 06:40:20

+0

@habe你可以用'tr'\ t''''做這個。如果你告訴我們你真的想要做什麼,那麼你就需要這樣做,我們可以幫助... – 2015-03-13 21:58:43

相關問題