以下のsedコマンドを実行します
sed -i s/abc=.*$/abc=def ghi/g hpq_sf_attach_wf_param.txt
そしてそれは私にエラーを与えました:
sed: -e expression #1, char 17: unterminated `s' command
def
との間のスペースが原因であることに気付きましたghi
。それを修正する方法はありますか?
$
スペース、 、などの特殊文字を保護するには、引用符を使用する必要があります*
。
sed -i 's/abc=.*$/abc=def ghi/g' hpq_sf_attach_wf_param.txt
だからギーコサウルスは正しかった。ただし、問題が発生した理由は、ワイルドカードを二重引用符で囲む必要があるためです。これは、一重引用符を使用すると、必要な意味ではなく、リテラル文字として使用されるためです。
sed -i "s/abc=.*$/abc=def ghi/g" hpq_sf_attach_wf_param.txt
また、「def」と「ghi」の間のスペースが問題になる場合は、「\」を追加すると、文字どおりのスペースとして読み取られるようになります。
sed -i "s/abc=.*$/abc=def\ ghi/g" hpq_sf_attach_wf_param.txt