2016-08-04 60 views
0

我喜歡這個 -操縱列文在UNIX

test.txt的製表符分隔文本文件

chrom1 start1 end1 
    2 8828280 8828281 
    2 8828952 8828953 
    2 115627275 115627276 
    3 63945545 63945546 
    3 109753479 109753480 
    3 109753640 109753641 
    4 31116488 31116489 
    4 31116523 31116524 

我怎樣才能做到以下任務在UNIX殼 -

  1. 將列名「chrom1」更改爲「chr」和
  2. add「chr」 「在」chr「列中的每個值前面。

輸出應該看起來像 -

chr start1 end1 
chr2 8828280 8828281 
chr2 8828952 8828953 
chr2 115627275 115627276 
chr3 63945545 63945546 
chr3 109753479 109753480 
chr3 109753640 109753641 
chr4 31116488 31116489 
chr4 31116523 31116524 

回答

1

您可以使用AWK:

awk 'BEGIN{FS=OFS="\t"} {$1 = "chr" (NR==1 ? "" : $1)} 1' file 

chr start1  end1 
chr2 8828280 8828281 
chr2 8828952 8828953 
chr2 115627275 115627276 
chr3 63945545 63945546 
chr3 109753479 109753480 
chr3 109753640 109753641 
chr4 31116488 31116489 
chr4 31116523 31116524 
+0

謝謝@anubhava。如果我想在同一個文件的第4列上做同樣的兩個更改,你能建議怎麼做嗎? – panbar

+0

對不起,我不明白你的問題只提到第一欄。 – anubhava

+0

如果必須在第4列而不是第1列進行更改 – panbar