파일을 검색하고 바꾸는 데 사용하는 GNU/Linux 명령 줄 도구는 무엇입니까?파일을 검색하고 대체하기 위해 사용하는 GNU/Linux 명령 행 도구는 무엇입니까?
검색 텍스트 및 바꾸기를 정규식 형식으로 지정할 수 있습니까?
파일을 검색하고 바꾸는 데 사용하는 GNU/Linux 명령 줄 도구는 무엇입니까?파일을 검색하고 대체하기 위해 사용하는 GNU/Linux 명령 행 도구는 무엇입니까?
검색 텍스트 및 바꾸기를 정규식 형식으로 지정할 수 있습니까?
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 [SUFFIX] - in-place [= SUFFIX] 파일을 제자리에 편집합니다 (확장자가 제공된 경우 백업합니다)
-r, --regexp-extended 스크립트에서 확장 정규 표현식을 사용하십시오.
FreeBSD 버전도 이러한 옵션을 지원합니다. NetBSD 및 OpenBSD 버전은 -r
만 지원합니다.
sed에 대해 자세히 알아 보려면 Cori님께 서 this tutorial을 제안하셨습니다.
펄은이를 위해 발명되었다 :
perl -pi -e 's/foo/bar/g;' *.txt
모든 정상들 /// 패턴을 그 작은 따옴표.
perl -pi.bak -e 's/foo/bar/g;' *.txt
또는 파이프 라인 :이 같은 뭔가 백업을 유지할 수
cat file.txt | perl -ne 's/foo/bar/g;' | less
을하지만 정말 더 나오지 일이다.
sed, 스트림 편집기, 예, 정규식을 사용합니다.
Perl 대신 Ruby를 고려하십시오. 그것은 펄의 한 줄의 명령 행 인수 (-i
, -p
, -l
, -e
, -n
) 및 자동 설정 당신을 위해 $_
펄 수행하고 정규식 장점을 많이 가지고 같이 대부분을 훔친. 또한 Ruby의 구문은 Perl이나 sed보다 읽기 쉽고 쓰기가 쉽습니다. (또는하지, 당신의 취향에 따라 다릅니다.)
ruby -pi.bak -e '$_.gsub!(/foo|bar/){|x| x.upcase}' *.txt
대 한 라이너를 다루는 대부분의 경우
perl -pi.bak -e 's/(foo|bar)/\U\1/g' *.txt
성능이 걱정하는 문제의 충분하지 않습니다 당신이 가벼운 sed 또는 중량급 Perl 또는 더 무거운 무게의 루비를 사용하는지 여부. 가장 쉬운 것을 쓰십시오.
유용한 예를 제공해 주셔서 감사합니다! 나는 그것이 다음과 같이 단순화 될 수 있다고 생각한다 :'ruby -pi.bak -e 'gsub (/ foo | bar /) {| x | x.upcase} '* .txt' (예를 들어,'$ _'을 제거하십시오). –
확장 정규식을 허용하는 -r 스위치에 대해 알지 못했습니다. 또한 -i는 --in-place에 대한 바로 가기입니다. –
자세한 내용을 원하면 위의 cori의 링크를 사용하십시오. sed는 perl afaik보다 더 가볍습니다 – MattSmith
그게 좋은 시작이에요 .. 그리고 튜토리얼 링크에 감사드립니다! – Swanand