여러 파일에서 정규식을 찾고 바꾸는 가장 좋은 도구는 무엇입니까?
문제
가능하다면 무료 도구를 사용하는 것이 좋습니다.
또한 여러 정규식을 검색하고 각각을 다른 문자열로 바꾸는 옵션은 보너스입니다.
해결책
펄.진지하게, 시스템 관리 작업이 훨씬 쉬워졌습니다.예는 다음과 같습니다.
perl -pi -e 's/something/somethingelse/g' *.log
다른 팁
sed는 빠르고 쉽습니다.
sed -e "s/pattern/result/" <file list>
find로 참여할 수도 있습니다:
find <other find args> -exec sed -e "s/pattern/result/" "{}" ";"
텍스트 패드 Windows에서 잘 작동합니다.그리고 그것은 또한 매우 훌륭한 편집자입니다.
이를 위해 Windows용 무료 명령줄 도구를 작성했습니다.그것은 ~라고 불린다 rxrepl, 유니코드 및 파일 검색을 지원합니다.어떤 사람들은 그것이 유용하다고 생각할 수도 있습니다.
당연히 Perl은 괜찮은 쉘과 함께 이것을 처리하는 훌륭한 작업을 수행합니다.
for file in @filelist ; do
perl -p -i -e "s/pattern/result/g" $file
done
이는 다음과 같은 효과를 가지지만 더 효율적이고 경쟁 조건이 없습니다.
for file in @filelist ; do
cat $file | sed "s/pattern/result/" > /tmp/newfile
mv /tmp/newfile $file
done
Emacs의 디렉토리 편집기에는 표시된 파일 세트에 대해 정규식을 검색하고 바꾸는 `dired-do-query-replace-regexp' 기능이 있습니다.
Windows에서는 내가 좋아했던 WinGrep
우분투에서는 Regxxer를 사용합니다.
Windows에서 여러 파일 찾기 및 바꾸기를 위해 찾았습니다. rx찾기 매우 도움이 될 것입니다.
Mac OS X의 경우 TextWrangler가 해당 작업을 수행합니다.
제가 개인적으로 가장 좋아하는 것은 파워그렙 JGSoft.이는 다음과 인터페이스합니다. RegexBuddy 정규식을 생성 및 테스트하는 데 도움이 되고, 모든 변경 사항을 자동으로 백업하고 실행 취소 기능을 제공하며, 여러 디렉터리를 구문 분석하는 기능(파일 이름 패턴 포함)을 제공하고 Microsoft Word, Excel 및 Microsoft Word와 같은 파일 형식도 지원합니다. PDF.
나는 bash + find + sed로 갈 것입니다.
Vim이 구조를 도와주었습니다(그리고 대통령 ;-) ).노력하다:
vim -c "argdo! s:foo:bar:gci" <list_of_files>
(저는 Vim의 -c 스위치를 정말 좋아합니다. 정말 마법 같아요.또는 이미 Vim을 사용하고 파일을 열었다면 다음과 같습니다:
vim <list_of_files>
그냥 발행하세요:
:bufdo! s:foo:bar:gci
물론 sed
그리고 perl
능력도 있고.HTH.
나는 Unix와 Ubuntu의 사치를 누리고 있습니다.둘 다에서 나는 둔한 사람 한 줄씩 검색하고 교체해야 하는 모든 작업, 특히 하위 문자열에 대한 한 줄씩 검색하는 경우.최근 Ubuntu의 수백 개의 파일 (1 개의 디렉토리)에서 수백만 행에 대해 1100 개의 변경 사항을 처리하는 데 가장 빠릅니다.
sudo apt-get install regexxer
Windows에는 가장 잘 작동하는 무료 대안이 있습니다.메모장++
"검색" -> "파일에서 찾기"로 이동하세요.디렉토리, 파일 패턴을 제공하고 정규식을 설정한 다음 일치 항목을 미리 보고 마지막으로 모든 파일을 재귀적으로 바꿀 수 있습니다.
나는 이 도구를 좋아한다:
정규식을 "입력하는 동안" 미리보기를 제공합니다...RE에 대해 잘 모르는 사람들에게는 환상적입니다...그리고 한 번에 수백 또는 수천 개의 파일을 변경하는 속도가 매우 빠릅니다.
그런 다음 변경 사항도 취소해 보겠습니다.
아주 좋은데...
패트릭 스틸 -http://www.podiotools.com
jEdit파일의 정규식 검색 및 바꾸기는 꽤 괜찮습니다.하지만 그 용도로만 사용한다면 약간 과잉입니다.또한 요청한 다중 표현식 대체도 지원하지 않습니다.
도구를 찾았어요 수신찾기 유용합니다(무료 OSS).
괄호 (소스 코드, deb/Ubuntu, OSx 및 Windows)에는 결과가 잘 시각화되어 대체를 적용하기 위해 개별적으로 선택할 수 있습니다.표준 텍스트, 대소문자 구분 여부, 정규식을 기준으로 검색할 수 있습니다.매우 중요:검색에서 파일 및 디렉터리 패턴을 제외할 수 있습니다.
적어도 25년 동안 나는 많은 수의 파일에 대한 대규모 교체를 위해 Emacs를 사용해 왔습니다.달리다 etags
검색할 파일 세트를 지정하려면 다음을 수행하십시오.
$ etags file1.txt file2.md dir1/*.yml dir2/*.json dir3/*.md
그런 다음 Emacs를 열고 실행하십시오. tags-query-replace
, 정규식 및 교체를 묻는 메시지가 표시됩니다.
\b\(foo\)\b
\1bar