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