使用 sed 或 awk 更改标头

使用 sed 或 awk 更改标头

我有不同的文件,我想更改其标题。目前各表如下:

MONTH GFDL.ESM2M_ECOMAG GFDL.ESM2M_HYPE
1 3546.21855483871 2345.11127781945

我想改变.一些-但只是为了标题。因此我想要以下输出:

MONTH GFDL-ESM2M_ECOMAG GFDL-ESM2M_HYPE
1 3546.21855483871 2345.11127781945

到目前为止我已经尝试过一个sed命令:

sed -i.bak "1,1s/./-/" file.txt

只需将Mof替换"MONTH"-.我还尝试过 awk 命令:

awk '(NR==1){gsub(".","-", $0);}{print;}' file.txt > jony.txt

这只是用一系列替换整个标头-

答案1

sed '1s/\./-/g' file.txt

应该为你做


为什么 。 ?

因为 sed.在 sed 中有特殊的含义。它用于匹配任何字符。您需要通过转义来去除特殊含义,即\.

答案2

awk与以下一起使用gsub()

awk 'NR==1 {gsub("\\.", "-", $0); quit};1' file.txt

例子:

$ cat file.txt                                  
MONTH GFDL.ESM2M_ECOMAG GFDL.ESM2M_HYPE
1 3546.21855483871 2345.11127781945

$ awk 'NR==1 {gsub("\\.", "-", $0); quit};1' file.txt
MONTH GFDL-ESM2M_ECOMAG GFDL-ESM2M_HYPE
1 3546.21855483871 2345.11127781945

相关内容