질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

1만개의 파일안에 내용 중 1line을 치환하려고 합니다.

작성자 정보

  • 마의광풍 작성
  • 작성일

컨텐츠 정보

본문

 

ㅜㅜ안녕하세요? 초보 리눅서입니다.

1~1만개의 파일안에...

aaaa.co.kr 라는 문구를 bbbb.co.kr로 치환하려고 하는데요...

그걸 쉘스크립트로 처리하려고 하는데... 어떻게 해야하나요?

그리고, 서버에서 어떻게 실행해야하는거죠? ㅡㅡ"무식한 리눅서입니다.

아시는 분 연락부탁드립니다......

관련자료

댓글 5

배준태님의 댓글

  • 배준태
  • 작성일
제가하는방식으로 쓰면

sed s/aaaa.co.kr/bbb.co.kr/g 파일명 > 새로운파일명

이렇게하는건데요 새로운파일명으로 안하면 파일내용이 사라져서 어쩔수없습니다.

무식한방법이긴하지만 이방법도괜찮습니다.. 나름..

김정주님의 댓글

  • 김정주
  • 작성일
perl -pi -e 's/변경원본형식/변경할형식/g' 대상파일명

저 명령어를 응용해서 하면 될것 같습니다.

만약에 디렉토리가 모두다 달라서 파일까지 찾으실려면

find . -type f -exec grep -H '찾을대상문구' {} ; | uniq | awk -F ":" '{print $1}'
이 명령어를 이용해서 리스트를 만들구요 만든 리스트를 perl 명령어로 변경하시면 될거 같습니다. 이때는 또 while 문을 쓰시면 될듯 하구요..

저도 초보인데 전에 저런 경우가 있어서 무식하게 이런식으로 했던거 같습니다.
조금이나마 도움이 되셨음 좋겠네요..

김정주님의 댓글

  • 김정주
  • 작성일
제가 알려드린것은 꼭 먼저 테스트를 해보세요
perl 명령어를 테스트 해보시고
find로 파일 검색하는것도 결과를 보시구요..

그담에 while 문으로 돌려서 하세요...그럼 될것 같습니다.
미리 백업 꼭 하시구요..테스트해보신 뒤에 하십시오..

잘못되면 난감하실테니까요..^_^ 해결 되셧음 좋겠네요.

김정주님의 댓글

  • 김정주
  • 작성일
1. 먼저 find 명령어로 찾을 단어 리스트를 만든다. (리스트는 a.txt)

 

find test -type f -exec grep -H 'aaaa' {} ; | uniq | awk -F ":" '{print $1}' > a.txt

 

$ cat a.txt  //aaaa 라는 문구가 들어간 파일 리스트

test/3.txt
test/5.txt
test/4.txt
test/2.txt
test/1.txt

 

2. 쉘스크립트를 이용하여 perl 명령어로 치환한다.

 

#!/bin/sh

(cat a.txt) | while read LINE
do
        LIST=$LINE
        perl -pi -e 's/aaaa/xxxx/g' $LIST
done

 

요런 식으로 한번 해보세용...

전배갑님의 댓글

  • 전배갑
  • 작성일
^^위에 분들의 도움으로 해결했어요...도움 감사드려요~

#!/bin/sh
(cat www.txt) | while read LINE
do
LIST=$LINE
perl -pi -e 's/www.aaa.co.kr/cgi-bin/RSA/xxxx.cgi/search.aaa.co.kr/cgi-bin/RSA/xxxx.cgi/g' $LIST
done

공지사항


뉴스광장


  • 현재 회원수 :  60,368 명
  • 현재 강좌수 :  37,041 개
  • 현재 접속자 :  278 명