[완료]perl 똑같은 단어의 줄만 삭제하기 질문 입니다.

sasimi2001의 이미지

wibro
ad-wibro
wibro-ad

이런 내용의 텍스트파일이 있습니다.(List) 이내용을 처리해서

ad-wibro
wibro-ad

이렇게 나올려고 합니다.

/usr/bin/perl -pi -e "s/.*wibro.*//" ./List

이런식으로 처리하니 내용이 모두 지원지고 이렇게 저렇게도 해봣는데

ad-
-ad

아무리 해봐도 이런식으로뿐이 안나오네요..

정리해서 원하는 단어만 있는(일부포함X) 즉 완전 같은 문자열이있는 줄만 삭제하고 싶습니다.(공백X)
그리고 삭제할 문자열은 변수로 받아서 처리합니다.(/usr/bin/perl -pi -e "s/.*$SUCCES.*//s" ./log/FAIL)

아니면 참고사이트라도 알려주셔도 괜찮습니다~^^

추가사항----

/usr/bin/perl -pi -e "s/^wibro$//s" ./List

이렇게 하니 줄삭제가 안되고 wibro 부분이 공백으로 변경되버리더군요..ㅠㅠ

aero의 이미지

결과를 새로운 파일로

perl -ne 'print unless /^wibro$/' file.txt > new.txt

원래파일을 수정

perl -pi -e 's/^wibro\n//' file.txt

참고: http://gypark.pe.kr/wiki/Perl/%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D

sasimi2001의 이미지

wibro 211.113.23.23 #space
ad-wibro 123.13.123 #tab
wibro-ad 123.123.123 #tab

이런 형식입니다(hosts 파일임)
단어와 숫자 사이에는 단순공백(space bar)이 올수도 있고 탭공백(tab)이 올수도 있습니다.

/usr/bin/perl -pi -e "s/^wibro(\t.*|$.*)//s" ./List

그래서 이런 식으로 실행하니

ad-wibro 123.13.123
-ad 123.123.123

결과값이 이렇게 나오네요..어느곳을 수정하면 될까요..ㅠㅠ

원하는 결과값은

ad-wibro 123.13.123 #tab
wibro-ad 123.123.123 #tab

입니다.

sasimi2001의 이미지

/usr/bin/perl -pi -e "s/^wibro(\t.*| .*)//s" ./List

=> 이렇게 하니깐 해결 됐네요.^^

aero의 이미지

방법은 여러가지가 있겠지만 이렇게

perl -pi -e 's/^wibro\s+.*\n//' file.txt