ファイルの行を置き換えるsedコマンドを書き込もうとしています。 sed replaceには現在の作業ディレクトリが必要でした。これにより、エスケープする必要のある文字のために、コマンドが少し乱雑になり始めます。
これが私がこれまでに持っているものです:
sed -i "s/^log.*$/log `echo pwd | sed 's/\//\\\//g'`\/redis\/redis.log\/" ./conf/redis.conf
ただし、これによりsedでエラーが発生します。
私はそれをより簡単なコマンドに分割しようとしました:
[email protected]:~/project$pwd | sed 's/\//\\\//g'
\/home\/user\/project
これは私が望むものを返しますが、コマンド置換を追加しようとすると失敗します:
[email protected]:~/project$ echo `pwd | sed 's/\//\\\//g'`
sed: -e expression #1, char 9: unknown option to `s'
助けていただければ幸いです
承認された回答:
私がその権利を読んでいる場合、あなたはスラッシュを置き換えようとしています(/
)エスケープされたスラッシュ(\/
)?これはロットを取得します /
を使用しないと、扱いやすくなります sed
の区切り文字として :
~ $ pwd | sed 's_/_\\/_g'`
\/home\/username
~ $ echo "$( pwd | sed 's_/_\\/_g' )"
\/home\/username