GNU/Linux >> Linux の 問題 >  >> Linux

SedでBlackslashをエスケープしますか?

ファイルの行を置き換える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

Linux
  1. ファイル内の文字列を置き換える方法は?

  2. Sedを使用して複数行の文字列を置き換える方法は?

  3. 「sed」を追加しますか?

  1. Sedは改行文字を置き換えることができますか?

  2. Linux での sed コマンドの例

  3. sed:コマンドが見つかりません

  1. SedですべてのCコメントを削除しますか?

  2. sedで使用するためにbashスクリプトでスラッシュを適切にエスケープする

  3. 複数行にわたる SED 置換