sedを使用したWindowsスタイルのパスの検索と置換

sedを使用したWindowsスタイルのパスの検索と置換

\\\\\\\\server\\\path1\\\\path2\\\\ with \\\\server\\path1\\path2\\私の仕事はinの複数の項目を置き換えることですmyfile.txt (追加のバックスラッシュを削除します)。

これを達成するためにsedを試しましたが、置き換える項目が見つかりませんでした。

sed 's:\\\\server\\path1\\path2\\:\\server\path1\path2\:g' myfile.txt

また、バックスラッシュをエスケープしようとしましたが、置き換える項目が見つかりませんでした。

sed 's:\\\\\\\\server\\\\path1\\\\path2\\\\:\\\\server\\path1\\path2\\:g' myfile.txt

愚かな質問かもしれませんが、本当に混乱しています。コマンドでこれを行う方法をどこでも見つけましたが、試したことは何も機能しませんでした。

答え1

あなたはそれを使用することができます

sed -e 's,\\\\,\\,g' -e 's/^\\\([^\\]\)/\\\\\1/' 

(2番目の部分はユースケースに応じて望む\somethingかも\\somethingしれませんし、望ましくないかもしれません。)

そのように:

\\something\already\ok   stays ok  (thanks to the 2nd part)
\\\\something\\like\\this becomes \\something\like\this

2番目の部分が省略された場合、

\\something\like\that becomes \something\like\that , which is wrong

関連情報