我有一个包含这种路径的文件:
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/
表达式(与最大深度一样多......不是很优雅)。
可能是用awk,但这种魔法超出了我的技能。
仅供参考,我需要这个技巧来纠正 cygwin 平台上的一些 gcov 二进制文件。
我正在处理二进制文件;因此,我可能有以下类型的数据:
bindata\bindata%bindataC:\good\foo.c
应该翻译为:
bindata\bindata%bindataC:/good/foo.c
第一个\
不能翻译,尽管它在同一行。
但是,我刚刚.gcno
在编辑此文本时检查了我的文件,看起来所有路径的两侧都带有零,因此下面的大多数答案都应该适合。