0

ファイルで一致が見つかった後にテキストを追加できるようにするシェルスクリプトを書いています

たとえば、次の行の〜/.bash_profileファイル

PATH=$PATH:$HOME/bin

:/usr/java/jdk1.6.0_38/binを追加する必要があります

だから次のようになります

PATH=$PATH:$HOME/bin:/usr/java/jdk1.6.0_38/bin

どうすればsedでそれを行うことができますか?

最初にコンソール内から次のコマンドを試してみましたが、'sed:-e expression#1、char 13:unknown option to`s''というエラーが発生しました。

sed '/PATH/s/$/:/usr/java/jdk1.6.0_38/bin' ~/.bash_profile

上記の私のコマンドの何が問題になっていますか?

4

2 に答える 2

3

問題は、substituteコマンドの置換部分に正規表現の区切り文字があることです。それらをエスケープする\か、別の区切り文字(この場合はコンマ)を使用します。

sed '/PATH/ s,$,:/usr/java/jdk1.6.0_38/bin,' ~/.bash_profile
于 2012-12-10T11:06:23.567 に答える
3

これはあなたのために働くかもしれません(GNU sed):

sed 's|PATH=$PATH:$HOME/bin|&:/usr/java/jdk1.6.0_38/bin|' ~/.bash_profile
于 2012-12-10T11:10:40.057 に答える