我有不同的文件,我想更改其标题。目前各表如下:
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
只需将M
of替换"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