回答この問題:
sed
バージョン4.2.2では、次のような状況が見つかりました。
以下から入力してください。
send host-name = gethostname();
domain-name, domain-name-servers, domain-search, host-name,
# option host-name "andare.swiftmedia.com";
2行目の文字列 "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
,
"
が、そこにはないので見つけることができません。