如何编辑多个列名称?

如何编辑多个列名称?

我有一个这样的文件:

CHROM POS ID A1_FREQ A1 REF DIR P OBS_CT
1 785989 1:785989:T:C 0.152651 T C + 0.152225 1641
1 1130727 1:1130727:A:C 0.0877514 C A - 0.987139 1641
1 1156131 1:1156131:T:C 0.160878 C T - 0.764454 1641
1 1158631 1:1158631:A:G 0.10847 A G + 0.795453 1641

我想将这 9 个列名称更改为这 9 个名称:

Chr BP Marker MAF A1 A2 Direction pValue N

我应该提到的是,我的所有列都是用空格分隔的。

我可以这样做:

sed -e '1s/CHROM/Chr/' -e '1s/POS/BP/' ... 

但命令太长了...还有其他方法可以做到这一点吗?

答案1

awk 'NR == 1 { $0 = "Chr BP Marker MAF A1 A2 Direction pValue N" }; 1' file >newfile

这将用于awk简单地输出完整的新标头来代替文件中的标头。所有其他行均按原始文件中的原样保留。newfile将使用结果创建一个名为 的新文件。

使用sed

{
    echo 'Chr BP Marker MAF A1 A2 Direction pValue N'
    sed 1d file
} >newfile

这将输出新的标头,然后继续从原始文件中生成除第一行之外的行。和以前一样,输出存储在newfile.

相关内容