この種のパスを含むファイルがあります。
C:\bad\foo.c
C:\good\foo.c
C:\good\bar\foo.c
C:\good\bar\[variable subdir count]\foo.c
そして、次のファイルを取得したいと思います。
C:\bad\foo.c
C:/good/foo.c
C:/good/bar/foo.c
C:/good/bar/[variable subdir count]/foo.c
一致しないパスは変更しないでください。
固定数のサブディレクトリに対して sed を使用してこれを行う方法は知っていますが、可変数が問題を引き起こしています。実際には、多くのs/x/y/
式を使用する必要があります (最大深度と同じくらい... あまりエレガントではありません)。
とあるかもしれませんが、この種の魔法は私のスキルを超えています。
参考までに、cygwin プラットフォームでいくつかの gcov バイナリ ファイルを修正するには、このトリックが必要です。
私はバイナリファイルを扱っています。したがって、次の種類のデータがある可能性があります。
bindata\bindata%bindataC:\good\foo.c
次のように翻訳する必要があります。
bindata\bindata%bindataC:/good/foo.c
同じ行にあるにもかかわらず、最初の\
ものを翻訳してはなりません。
ただし、このテキストの編集中にファイルをチェックしたところ、.gcno
すべてのパスがゼロで囲まれているように見えるため、以下の回答のほとんどが適合するはずです。