二重引用符で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";

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 , "が、そこにはないので見つけることができません。

おすすめ記事