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

これまでに試したコマンドの1つは次のとおりですsed

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

ofをにM変更します。また、awkコマンドも試しました。"MONTH"-

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

関連情報