행을 삭제하려면 다음 코드를 사용합니다.
sed -i "0,/$DELETE_THIS/{/$DELETE_THIS/d;}" file.txt
하지만 변수에 등의 특수 문자가 포함되어 있으면 이 DELETE_THIS
코드 는 실패합니다 ..
/
*
sed
모든 특수 문자를 무시하고 기본 텍스트로 사용하도록 지시하는 방법이 있습니까 ?
답변1
문자열이 있고
$DELETE_THIS
문자 그대로 처리하는 방식으로sed
해당 문자열을 전달 하려고 합니다.sed
이렇게 하려면 의미가 있는 모든 문자 쌍을 인용해야 합니다
sed
.백슬래시를 앞에 붙입니다. 예를 들어 Bash 구문을 사용하면 다음과 같습니다.
DELETE_THIS="$(<<< "$DELETE_THIS" sed -e 's`[][\\/.*^$]`\\&`g')"
^ab[c-d]\ef$
예를 들어 , 이는\^ab\[c-d\]\\ef\$
.