검색을 수행하고 파일에서 교체하는 데 사용하는 GNU/Linux 명령 줄 도구는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/155934

  •  03-07-2019
  •  | 
  •  

문제

검색을 수행하고 파일에서 교체하는 데 사용하는 GNU/Linux 명령 줄 도구는 무엇입니까?

검색 텍스트 및 교체를 Regex 형식으로 지정할 수 있습니까?

도움이 되었습니까?

해결책

sed 's/a.*b/xyz/g;' old_file > new_file

gnu sed (아마도 당신이 가진)는 훨씬 더 다재다능합니다.

sed -r --in-place 's/a(.*)b/x\1y/g;' your_file

다음은 이러한 옵션에 대한 간단한 설명입니다.

-i [접미사],-내 장소 [= 접미사제자리에 파일 편집 (확장자가 제공되는 경우 백업 제작)

-r, -regexp-extended스크립트에서 확장 정규 표현식을 사용하십시오.

그만큼 freebsd 버전은 또한 이러한 옵션을 지원합니다. 그만큼 netbsd 그리고 OpenBsd 버전 만 지원합니다 -r.

SED에 대해 더 배우고 싶다면 코리 제안했습니다 이 튜토리얼.

다른 팁

이를 위해 Perl이 발명되었습니다.

perl -pi -e 's/foo/bar/g;' *.txt

단일 따옴표의 정상적인 s /// 패턴. 다음과 같이 백업을 유지할 수 있습니다.

perl -pi.bak -e 's/foo/bar/g;' *.txt

또는 파이프 라인 :

cat file.txt | perl -ne 's/foo/bar/g;' | less

그러나 그것은 정말로 더 많은 SED의 직업입니다.

루비를 Perl의 대안으로 간주하십시오. 그것은 대부분의 Perl의 One-Liner Commandline Args를 훔쳤습니다 (-i, -p, -l, -e, -n) 및 자동 세트 $_ 당신은 Perl이하는 것처럼 당신을 위해, 그리고 많은 정수의 선을 가지고 있습니다. 또한 Ruby의 구문은 Perl 또는 SED보다 더 편안하고 읽거나 쓰기가 더 쉽습니다. (또는 당신의 취향에 따라 다르지 않습니다.)

ruby -pi.bak -e '$_.gsub!(/foo|bar/){|x| x.upcase}' *.txt

vs.

perl -pi.bak -e 's/(foo|bar)/\U\1/g' *.txt

대부분의 경우 한 라이너를 다룰 때 성능은 경량 SED 또는 헤비급 Perl 또는 Heaveier-Weight Ruby를 사용하는지 여부를 관리하기에 충분하지 않습니다. 글을 가장 쉽게 사용하십시오.

sed, 스트림 편집기, 예, Regex를 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top