在unix

时间:2016-08-04 16:22:17

标签: shell unix awk sed

我有一个制表符分隔的文本文件,如this-

  

的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 shell中执行以下任务 -

  1. 将列名“chrom1”更改为“chr”和
  2. 在“chr”列中的每个值前添加“chr”。
  3. 输出应该看起来像 -

     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 个答案:

答案 0 :(得分: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