2016-04-26 38 views
0

我正在使用awk在製表符分隔文件中插入新列,然後我希望輸出製表符分隔。然而,而不是預期的5製表符分隔欄,我只得到2awk在插入列後添加' t'到輸出文件

awk -v var=$REL_TYPE -F "\t" '{$3=var FS $3 ;}1' $INPUT_FILE > OFS="\t" $OUTPUT_FILE 

這裏是輸入數據:

a1000 a1001 213 1 
a1000 a7020 164 2 
a1000 a6004 160 3 
a1000 a7004 124 4 

這裏的輸出數據:

a1000 a1001 inserted_column 213 1 
a1000 a7020 inserted_column 164 2 
a1000 a6004 inserted_column 160 3 
a1000 a7004 inserted_column 124 4 

乍一看,這看起來很完美,但輸出只有兩個由'\ t'分隔的列,在$ 3之後。

+2

'OFS =「\ t」'是您重定向到的輸出文件,它不被用作awk變量賦值。 – Barmar

+0

在讀取輸入文件之前,您還需要對'OFS' *進行賦值,使其對輸入文件生成的輸出生效。因此'awk -v ... -F ...'腳本...'OFS ='\ t'「$ INPUT_FILE」>「$ OUTPUT_FILE」'。 –

回答

1

您沒有正確設置OFS。將作業放置在>之後使其成爲要寫入的輸出文件,因此不會將其作爲變量分配進行分析。以下着作:

awk -v var=$REL_TYPE -v OFS="\t" -F "\t" '{$3=var FS $3 ;}1' $INPUT_FILE > $OUTPUT_FILE