sed - 文件中的 DOS 到 UNIX 路径替换

标签 sed cygwin awk gcov lcov

我有一个包含这种路径的文件:

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 为固定数量的 subdir 执行此操作,但是可变数量给我带来了麻烦。实际上,我将不得不使用许多 s/x/y/表达式(与最大深度一样多......不是很优雅)。

可能会用awk,但是这种魔法超出了我的技能。

仅供引用,我需要这个技巧来纠正 cygwin 平台上的一些 gcov 二进制文件。

我正在处理二进制文件;因此,我可能有以下类型的数据:
bindata\bindata%bindataC:\good\foo.c

应翻译为:
bindata\bindata%bindataC:/good/foo.c

第一\不得翻译,尽管它在同一行上。

但是,我刚刚检查了我的 .gcno编辑此文本时的文件,看起来所有路径的两侧都带有零,因此下面的大多数答案都应该适合。

最佳答案

sed -e '/^C:\\good/ s/\\/\//g' input_file.txt

关于sed - 文件中的 DOS 到 UNIX 路径替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/496408/

相关文章:

git add interactive 在 cygwin 中挂起,而不是在 cmd 提示符中

c - 是什么延迟了我的 C 程序的 printf 输出?

date - 如何将特定列中的文件 csv 日期转换为 unix 日期

linux - 如何用awk划分?

regex - 如何在 sed 命令中匹配正则表达式 1 到 3 次?

regex - 使用 sed 和正则表达式从字符串中提取数字

linux - 在 sed 中匹配固定字符串

svn - 如何使用 groovy 从 svn 标签获取修订号

cygwin - BC命令在CYGWIN中不起作用

awk 只保留逗号分隔字段的第一个和最后一个值