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

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

관련 정보