특정 경우에 파일 내의 텍스트를 바꾸고 싶습니다. 예를 들어 Document.txt "우리 가족"이 "우리"에 대해 말하는 모든 것. 이를 위해 선호하는 텍스트 편집기 (Kate, Gedit, SublimeText 등)를 사용할 수 있지만 동일한 결과를 얻을 수있는 다른 방법과 변형을 아는 것이 항상 좋습니다.
그것은 정규식 이것은 달성 할 수 있습니다. sed 명령은 단순히 훌륭합니다. 끝없는 변형과 옵션이 있지만 ... 가능한 가장 덜 복잡한 방법, 그들에게는 훨씬 더 간단한 변형을 가져 왔습니다.
예제에 따라 우리는 Document.txt 에 위치 $ 홈 / Document.txt 다음 텍스트로 :
(...) 내 가족 그것은 당신이나 당신 이웃의 그들 모두와 같습니다. 사실로 내 가족 우리는 책임감있는 사람이되고 사회의 눈에 정치적으로나 사회적으로 옳도록 노력합니다. 하지만 우리 집에는 흑양이 있는데 그게 내 역할 LOL !. 나는 항상 그가 생각하는 것을 말하는 것을 두려워하지 않는 사람이었습니다 (사회의 눈에는 옳지 않더라도), 실제로 우리 가족은
더러운오늘날의 사회.
다음 명령을 사용하여«내 가족"by"우리":
perl -pi -e "s[mi familia][nosotros]g" $HOME/Documento.txt
간단합니다 🙂
따라서 텍스트는 다음과 같습니다.
(...) 우리 그것은 당신이나 당신 이웃의 그들 모두와 같습니다. 사실로 우리 우리는 책임감있는 사람이되고 사회의 눈에 정치적으로나 사회적으로 옳도록 노력합니다. 하지만 우리 집에는 흑양이 있는데 그게 내 역할 LOL !. 나는 항상 그가 생각하는 것을 말하는 것을 두려워하지 않는 사람이었습니다 (사회의 눈에는 옳지 않더라도), 실제로 우리 가족은
더러운오늘날의 사회.
구문은 다음과 같습니다.
perl -pi -e "s[lo-que-quiero-cambiar][lo-nuevo-a-poner]g" archivo-en-el-cual-reemplazar
명령이 약간 복잡해 보일 수 있습니다. 좀 더 자세히 설명해 봅시다. 😉
- 펄 : 우리가 사용할 것, 펄
- -파이 : Pí, 어떻게 π (3.14의 근사값)
- -e : E는«e가 실행된다»를 상상합니다. ^ - ^
- 그런 다음 따옴표로 » 우리는 s 그리고 우리는 g : "sg" … 시작을위한 S와 게임 종료를위한 G를 상상해보세요 😀
- 사이를 돌려 sg 두 세트의 괄호를 넣어야합니다. [] y [], 그런 식으로 : "S [] [] g"
- 위에서 말했듯이 첫 번째 대괄호 안에는 제거하고 새 텍스트로 바꾸려는 텍스트가 표시되고 두 번째 대괄호 집합에는 예제에 따라 넣을 새 텍스트가 표시됩니다. "S [우리 가족] [우리] g"
간단하지 않습니까?
설명은 실제로 명령에 필요한 것보다 훨씬 광범위하며 이해하기가 매우 간단합니다.
Perl은 텍스트를 대체하는 방법 그 이상이며 전체 언어입니다 😉
이에 대해 자세히 알아 보려면 패키지를 설치하십시오. Perl-doc 그리고 그것이 허용하는 것을 whooodo 살펴보십시오. 그것은 단지 다른 우주입니다.
그건 그렇고 닫으려면 $ HOME / Documents /에있는 모든 .txt 파일을 찾고 각 파일에서 "my family"를 "us"로 바꾸고 싶다면 find + perl에 가입하여 다음을 수행 할 수 있습니다.
find $HOME/Documentos/ -name *.txt -exec perl -p -i -e "s[mi familia][nosotros]g" {} \;
또는 와일드 카드 사용 :
perl -p -i -e "s[mi familia][nosotros]g" $HOME/Documentos/*.txt
이 두 번째 변종의 문제는 하위 폴더에있는 파일에서 대체되지 않는다는 것입니다.
어쨌든 흥미 로웠기를 바랍니다. 저에게는 정말 유용했습니다. 이미 터미널에서 직접 텍스트를 바꿀 수 있습니다. 😀
글쎄, 여기 많은 사람들이 sed 명령을 알고 있다고 생각합니다.이 명령은 동일한 용도로 사용되며 훨씬 더 잘하고 사용하기 쉽습니다 ...
의견 주셔서 감사합니다.
두 가지 세부 사항, 왜 sed가 더 나아 진다고 말합니까? 너무 많은 '이상한'캐릭터와 함께 사용하는 것이 정말 더 쉬운가요?
모두에게 인사 !!!. 나는 명령을 사용했다 SED이며 여기에 설명 된 perl 방법이 더 간단합니다. 감사합니다 KZKG ^ Gaara !!!.
댓글 주셔서 감사합니다 🙂
글쎄, 적어도 이것은 정규 표현식보다 더 간단한 것 같습니다 ... 너무 많은 '이상한'문자를 사용하면 이해하고 배우기가 정말 복잡한 일이 익숙하지 않은 사람도 할 수 있습니다.
"오래된"격언이 있습니다.«문제가 생겼습니다. 정규 표현식을 사용하기로 결정했습니다 ... 이제 두 가지 문제가 있습니다»😉
하 하하하 하하하!
정규 표현식은 특정 시점에서 우리의 생명을 구할 수 있습니다. 예, 사용 방법을 배우는 데 오랜 시간이 걸립니다.
내가 몇 년 전에이 명령을 알고 있었다면, 하나님 !! 내 인생이 얼마나 단순했을까요 😀
확실한! 잘 처리되어 매우 강력합니다 🙂 텍스트를 조작하는 데 더 좋은 것은 없습니다. 하지만이 경우에 Perl로 말했듯이, 교체가 충분하다면 그렇게 멀리 갈 필요가 없습니다.
어쨌든 파이썬을 사용했을 것입니다 :)
하지만 목이 마르면 더 간단 해집니다. 제가 뭔가 잘못하고있는 것일까 요?
sed -i "if / What-I-want-to-change / new-to-put /"file-in-which-to-replace
heh heh ... "http://my.blog.com/content/"를 "http://my.blog.com/uploads/files/"로 바꾸고 싶다면 😀 ... 이미 거기에 있습니다. \를 공백 등으로 넣으면 복잡해 질까요?
/를 구분 기호로 사용해야하는 것은 아닙니다. +로 봐
sed -i«s + http : //my.blog.com/content/+http : //my.blog.com/uploads/files/+»파일
O_O… WTF!
당신은 나에게 모든 선택의 세계를 열어 주셨습니다 .. O_O
나는 우리 모두가 뭔가를 배우는이 게시물을 좋아합니다 🙂
나는 그것도 몰랐다.
직접 vi ..
다음과 같이 간단합니다.
: % s / 미국 / 우리 가족 / g
%-> 전체 문서
s-> 검색
g-> 모든 발생
인사말 ..
당신을 감사하십시오!
vi로하는 방법을 몰랐습니다
즐겨 찾기에 추가되었습니다!
당신을 감사하십시오!
rpl 명령이 약간 있으면 살펴보십시오.
http://microbuffer.wordpress.com/2011/02/28/rpl-buscar-y-reemplazar-strings-en-linux-unix/
누구나 관심이있는 경우 Linux sed 명령과 동일합니다. http://www.sysadmit.com/2015/07/linux-reemplazar-texto-en-archivos-con-sed.html
파일 내에서 대체하려는 항목에 따옴표가 있으면 어떻게됩니까?
예를 들어 텍스트를 바꾸십시오.»1 ″를 텍스트로 바꾸십시오.»2 ″
명령은 어떻습니까?
안녕하세요.
중간에 @가있는 문자열을 바꾸고 싶었고 텍스트 만 at 앞으로 변경했습니다.
변경할 텍스트 : 페루 만세
새 텍스트 : Viva mi patria @percysalgado
그림 : 내 조국 만세
당신의 도움을 주셔서 감사합니다
"\"이중 사용 @, #가있는 문자 앞에는 슬래시를 사용해야 텍스트로 해석됩니다.
그리고 창에서 어떻게하나요 ????