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