我有一个这样的文件:
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
.