sed '1s/\./-/g' file.txt
deve fazer isso por você
Por quê? ?
Porque o .
tem um significado especial no sed. É usado usado para combinar com qualquer caractere. Você precisa retirar o significado especial escapando, isto é, \.
.
Eu tenho um arquivo diferente para o qual gostaria de alterar o cabeçalho. Atualmente as tabelas são as seguintes:
MONTH GFDL.ESM2M_ECOMAG GFDL.ESM2M_HYPE
1 3546.21855483871 2345.11127781945
Eu gostaria de alterar o .
por alguns -
, mas apenas para o cabeçalho. Portanto, eu gostaria da seguinte saída:
MONTH GFDL-ESM2M_ECOMAG GFDL-ESM2M_HYPE
1 3546.21855483871 2345.11127781945
Até agora eu tentei um comando sed
:
sed -i.bak "1,1s/./-/" file.txt
que apenas substitui o M
de "MONTH"
por -
.
Eu também tentei um comando awk:
awk '(NR==1){gsub(".","-", $0);}{print;}' file.txt > jony.txt
Que apenas substitui todo o cabeçalho por uma sucessão de -
Usando awk
com gsub()
:
awk 'NR==1 {gsub("\.", "-", $0); quit};1' file.txt
Exemplo:
$ 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