Unix Perl은 문자열 일치 및 줄 삭제

Unix Perl은 문자열 일치 및 줄 삭제

파일에서 문자열을 삭제하기 위해 Perl을 사용하고 있는데 파일에서 문자열을 삭제하지만 실제 줄은 삭제되지 않으므로 파일의 다음 삽입은 기록되는 다음 줄이 됩니다.

사용된 Perl 명령:

host=ABC1234
perl -lpi -e "s/$host//g" /tmp/exclude_list

산출:

ABC1234 

답변1

그리고

cp /tmp/exclude_list /tmp/exclude_list.tmp
grep -Fx -v -e "$host" /tmp/exclude_list.tmp >/tmp/exclude_list
rm /tmp/exclude_list.tmp

모든 행을 삭제합니다정확히일치하는 문자열입니다 $host. 행을 삭제 -Fx하도록 변경-F포함하다끈. 정규식 -F으로 사용하려면 사용하지 마세요.$host

또는 Perl을 사용하십시오.

perl -i -sn -e 'print unless /$host/' -- -host="$host" /tmp/exclude_list

perl여기에 사용된 옵션은 Perl이 명령줄에서 Perl 변수를 인스턴스화하고 Perl이 코드 주변에 제공하는 암시적 루프 내에서만 명시적으로 인쇄할 수 있도록 하는 -i내부 편집을 위한 것입니다 . 실제 코드를 매개변수로 전달합니다 .-s$host-n-e

Perl 코드는 정규식과 일치하지 않는 모든 줄을 삭제합니다 $host.

$host다음과 같이 사용됨:

perl -i -sn -e 'print unless index($_, $host) >= 0' -- -host="$host" /tmp/exclude_list

관련 정보