파일에서 문자열을 삭제하기 위해 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