OS X에서 sed를 사용한 전체 편집
OS X에서 sed로 파일을 편집하고 싶습니다. 다음 명령을 사용하고 있습니다.
sed 's/oldword/newword/' file.txt
출력이 터미널로 전송됩니다. file.txt 는 수정되지 않습니다. 변경 사항은 다음 명령 으로 file2.txt 에 저장됩니다 .
sed 's/oldword/newword/' file1.txt > file2.txt
그러나 나는 다른 파일을 원하지 않습니다. 그냥 file1.txt 편집하고 싶습니다 . 어떻게해야합니까?
-i 플래그를 시도했습니다. 다음과 같은 오류가 발생합니다.
sed: 1: "file1.txt": invalid command code f
-i
백업 된 파일에 추가 할 접미사를 제공 하여 플래그를 올바르게 사용할 수 있습니다 . 예를 확장 :
sed -i.bu 's/oldword/newword/' file1.txt
두 개의 파일을 제공합니다. 하나 file1.txt
는 대체를 포함하는 이름 을 가진 파일 과 file1.txt.bu
원래 내용을 가진 이름 을 가진 파일입니다.
약간 위험
원본 파일을 파괴적으로 덮어 쓰려면 다음과 같이 사용하십시오.
sed -i '' 's/oldword/newword/' file1.txt
^ note the space
행이 구문 분석되는 방식으로 인해 인수의 길이가 0이므로 옵션 플래그와 인수 사이에 공백이 필요합니다 .
원본을 쓰레기로 버리는 것 외에는 이런 식으로 sed를 속일 수있는 더 이상의 위험을 알지 못합니다. 그러나이 호출이 sed
스크립트의 일부인 경우 , Unix Way ™ (IMHO)는 sed
비파괴 적 으로 사용 하고, 완전히 종료되었는지 테스트 한 다음 외부 파일 만 제거해야합니다.
MacOS와 비슷한 문제가 있습니다
sed -i '' 's/oldword/newword/' file1.txt
작동하지 않지만
sed -i"any_symbol" 's/oldword/newword/' file1.txt
잘 작동합니다.
이미 제안 된대로 -i''
( --in-place
)을 사용할 수 있습니다 sed
. 참조 : 에 적절한 인수 , 그러나주의 옵션은 표준이 아닌 FreeBSD의 확장이며, 다른 운영 체제에서 사용하지 못할 수 있습니다. 두 번째 는 파일 편집기가 아닌 S tream ED itor 입니다.-i
-i
sed
다른 방법은 다음과 같이 Vim Ex 모드에서 내장 대체를 사용하는 것입니다.
$ ex +%s/foo/bar/g -scwq file.txt
여러 파일의 경우 :
$ ex +'bufdo!%s/foo/bar/g' -scxa *.*
모든 파일을 재귀 적으로 편집하려면 **/*.*
셸에서 지원하는 경우 (로 활성화 shopt -s globstar
) 사용할 수 있습니다 .
또 다른 방법은 다음 gawk
과 같은 새로운 "inplace"확장을 사용하는 것입니다.
$ gawk -i inplace '{ gsub(/foo/, "bar") }; { print }' file1
당신이 사용할 수있는:
sed -i -e 's/<string-to-find>/<string-to-replace>/' <your-file-path>
예:
sed -i -e 's/Hello/Bye/' file.txt
이것은 Mac 에서 완벽하게 작동합니다 .
sed -i -- "s/https/http/g" file.txt
백업 파일이 생성됩니다. 예 sed -i -e 's/hello/hello world/' testfile
를 들어 , 같은 디렉토리에 testfile-e 백업 파일을 만듭니다.
참고 URL : https://stackoverflow.com/questions/7573368/in-place-edits-with-sed-on-os-x
'Programming' 카테고리의 다른 글
전체 HTML 양식을 "읽기 전용"으로 만들려면 어떻게해야합니까? (0) | 2020.07.04 |
---|---|
ASP.NET MVC의 EditorFor ()에 대한 HTML 특성 (0) | 2020.07.04 |
JSON을 루비 해시로 변환 (0) | 2020.07.04 |
루트 응용 프로그램을 변경하는 방법? (0) | 2020.07.03 |
올바른 개수의 인수 확인 (0) | 2020.07.03 |