리눅스 분류
1만개의 파일안에 내용 중 1line을 치환하려고 합니다.
작성자 정보
- 마의광풍 작성
- 작성일
컨텐츠 정보
- 1,976 조회
- 5 댓글
- 0 추천
- 목록
본문
ㅜㅜ안녕하세요? 초보 리눅서입니다.
1~1만개의 파일안에...
aaaa.co.kr 라는 문구를 bbbb.co.kr로 치환하려고 하는데요...
그걸 쉘스크립트로 처리하려고 하는데... 어떻게 해야하나요?
그리고, 서버에서 어떻게 실행해야하는거죠? ㅡㅡ"무식한 리눅서입니다.
아시는 분 연락부탁드립니다......
관련자료
-
이전
-
다음
댓글 5
배준태님의 댓글
- 배준태
- 작성일
제가하는방식으로 쓰면
sed s/aaaa.co.kr/bbb.co.kr/g 파일명 > 새로운파일명
이렇게하는건데요 새로운파일명으로 안하면 파일내용이 사라져서 어쩔수없습니다.
무식한방법이긴하지만 이방법도괜찮습니다.. 나름..
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 문을 쓰시면 될듯 하구요..
저도 초보인데 전에 저런 경우가 있어서 무식하게 이런식으로 했던거 같습니다.
조금이나마 도움이 되셨음 좋겠네요..
저 명령어를 응용해서 하면 될것 같습니다.
만약에 디렉토리가 모두다 달라서 파일까지 찾으실려면
find . -type f -exec grep -H '찾을대상문구' {} ; | uniq | awk -F ":" '{print $1}'
이 명령어를 이용해서 리스트를 만들구요 만든 리스트를 perl 명령어로 변경하시면 될거 같습니다. 이때는 또 while 문을 쓰시면 될듯 하구요..
저도 초보인데 전에 저런 경우가 있어서 무식하게 이런식으로 했던거 같습니다.
조금이나마 도움이 되셨음 좋겠네요..
김정주님의 댓글
- 김정주
- 작성일
제가 알려드린것은 꼭 먼저 테스트를 해보세요
perl 명령어를 테스트 해보시고
find로 파일 검색하는것도 결과를 보시구요..
그담에 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
요런 식으로 한번 해보세용...
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
#!/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