큰따옴표와 함께 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에서 "hostname" 문자열을 제거하지 않고 그대로 둡니다.

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

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 , "지만 거기에 없기 때문에 찾을 수 없습니다.

관련 정보