아래와 비슷한 파일 내용
abc.w.f.com
asdff.d.f.com
..........
점 뒤의 모든 항목을 제거하고 변경 사항을 동일한 파일에 덮어써야 합니다.
abc
asdff
아래에서 시도했지만 다른 파일로 리디렉션해야 하는데 원하지 않습니다.
sed "s/\..*//" Filename > File2
답변1
사용 -i
:
sed -i 's/\..*$//' Filename
-i[SUFFIX], --in-place[=SUFFIX]
제자리에서 파일 편집(SUFFIX가 제공되면 백업 생성)
답변2
동일한 파일로 리디렉션할 수 없습니다. 명백한 문제는 에서 파일을 읽기 전에 sed "s/\..*//" Filename > Filename
쉘이 쓰기 위해 열리고 덮어쓴다는 것입니다 .Filename
sed
출력을 다른 파일로 리디렉션하고 원본 파일을 삭제한 다음 새로 생성된 파일의 이름을 원본과 동일하게 바꿔야 합니다. Sed, Perl 및 AWK가 이 작업을 수행할 수 있습니다.
sed -i
perl -i
awk -i inplace
또는 다음을 사용할 수 있습니다 sponge
.
sed "s/\..*//" Filename | sponge Filename
sponge
표준 입력에서 받은 내용을 계속 버퍼링한 다음 Filename
.