2012-08-14 63 views
4

我試圖向預先存在的製表符分隔文本文件的中間添加一列(內容爲'0')。我想sedawk會做我想做的。我已經在網上看到了各種各樣的解決方案,但這些解決方案不足以讓我修改!將列添加到製表符分隔文件的中間(sed/awk/whatever)

我現在有這樣的內容:

Affx-11749850 1  555296 CC 

我需要這個內容

Affx-11749850 1 0 555296 CC 

使用命令awk '{$3=0}1'名打亂了我的格式,並用0代替第3列,而不是添加第三列爲0.

任何幫助(與解釋!)所以我可以解決這個問題,和未來類似的問題,非常感謝。

+0

一個相關的問題 - 該文件有280列,我想改用大約一列兩,切我不知道如何實現,如果沒有打字了某種大規模打印語句$ 277,$ 278,$ 279 ... – 2012-08-14 12:43:58

回答

8

使用隱式{ print }規則和追加0到第二列:

awk '$2 = $2 FS "0"' file 

或者與sed,假定單個空格分隔符:

sed 's//0 /2' file 

或者perl

perl -lane '$, = " "; $F[1] .= " 0"; print @F' 
+2

AWK的一個非常類似的選項將使得分隔符AWK爲'awk'{$ 5 = $ 4; $ 4 = $ 3; $ 3 = 0} 1''我寧願這只是因爲這個原因 – dualed 2012-08-14 11:31:01

+0

或者'FS'連接,'awk'解決方案更新。 – Thor 2012-08-14 11:40:12

+0

對我來說'awk'並不保留實際的'FS',而是使用空格(默認)。因此,爲了保持文件製表符分隔,我必須做'awk'$ 2 = $ 2「\ t0」'文件' – 2012-08-14 11:43:13

1
awk '{$2=$2" "0; print }' your_file 

測試下面:

> echo "Affx-11749850 1 555296 CC"|awk '{$2=$2" "0;print}' 
Affx-11749850 1 0 555296 CC 
相關問題