다른 파일이 있는데 제목을 변경하고 싶습니다. 현재 테이블은 다음과 같습니다.
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