sedを使用して、文字列をディレクトリ名(スラッシュ "/"など)を含む文字列に置き換えます。

sedを使用して、文字列をディレクトリ名(スラッシュ "/"など)を含む文字列に置き換えます。

この質問は以前に要求されたことがあることを知っていますが、私が見つけた答えを理解することはできません。基本的に使いたい

sed -i /ひも//一部/ディレクトリ/ g 'ファイル.txt

構文を/some/directory壊さずにこれを行う方法に関する直接的な答えが見つかりません。sed

答え1

sed複数の構文区切り文字が許可されますが、/最も一般的に使用される区切り文字のみが許可されます。

また、話すことができます

sed -i 's,<string>,<some/directory>,g' file.txt

ここでは,一般的に によって行われる機能があり、/後者を特別な意味で解放します。

ただし、(@Jeff Schallerが指摘したように),ファイルやディレクトリ名に表示されてはいけません。ファイル名で有効な文字です! この回答sed特殊文字を含む文字列に適用するときの進行方法の良い概要です。

答え2

検索/置換文字列に表示されない区切り文字が見つかった場合は、検索/置換文字列に表示されないことがわかっている区切り文字で区切り文字を置き換えるのも良い方法です。私はカンマではなくプラス記号を使用する傾向がありますが、これはほとんど習慣の問題です。

ただし、文字列に表示されない区切り文字がない場合は、常にバックスラッシュエスケープが使用されます。

sed -e 's/<string>/<some\/directory>/g' file.txt

\スラッシュの前の記号は、sed区切り記号ではなくスラッシュであることを示します。

答え3

#@AdminBee これまで区切り文字としてのみ使用されているのを見ました。コンマよりもパターンではあまり頻繁に表示されないと推測されます。

sed -i 's#<string>#<some/directory>#g' file.txt

関連情報