큰따옴표와 함께 sed 사용

큰따옴표와 함께 sed 사용

응답이 질문:

sed버전 4.2.2 에서 다음과 같은 상황을 발견했습니다 .

이 입력에서:

send host-name = gethostname();
    domain-name, domain-name-servers, domain-search, host-name,
#  option host-name "andare.swiftmedia.com";

두 번째 줄에서만 "host-name" 문자열을 제거하고 싶으므로 예상되는 출력은 다음과 같습니다.

send host-name = gethostname();
    domain-name, domain-name-servers, domain-search,
#  option host-name "andare.swiftmedia.com";

그런 다음 다음 명령을 사용했습니다.

sed -e 's/" host-name,"//g' input_file

그러나 input_file의 "host-name" 문자열은 제거되지 않고 그대로 유지됩니다.

큰따옴표를 사용하지 않는 경우:

sed -e 's/ host-name,//g' input_file

예상되는 출력을 올바르게 제공합니다.

올바른 방법은 큰따옴표를 사용하는 것이라고 생각했지만 여기서는 왜 작동하지 않는지 알 수 없습니다.

답변1

"껍데기 속 캐릭터 는 특별하지 않은데 '... '. 사실 내부는 '...' 어떤 캐릭터도 특별하지 않아요껍질의 경우; 결과적으로 "문자는 에 전달됩니다 sed. 그리고 그들은 특별하지 않습니다 sed.

이 명령은 sed -e 's/" host-name,"//g'말 그대로 를 찾고 있는데 "   h o s t n a m e , ", 거기에 없기 때문에 찾을 수 없습니다.

관련 정보