用双引号内的正斜杠替换反斜杠

用双引号内的正斜杠替换反斜杠

我有一些最初在 Windows 上开发的 C 源代码。现在我想在 Linux 上进行它的工作。有大量的 include 指令需要更改为 Linux 格式,例如:

#include "..\includes\common.h"

我正在寻找一个命令行来遍历所有.h文件.c,找到包含指令并将任何反斜杠替换为正斜杠。

答案1

find+ GNUsed解决方案:

find . -type f -name "*.[ch]" -exec sed -i '/^#include / s|\\|/|g' {} +
  • "*.[ch]"- 通配符查找扩展名.c或的文件.h
  • -i:GNUsed扩展,可就地编辑文件,无需备份。 FreeBSD/macOSsed有类似的扩展,但语法-i ''不同。
  • /^#include /- 在遇到/匹配以模式开头的行时:#include
  • s|\\|/|g\-用正斜杠替换所有反斜杠/\用反斜杠转义\以进行文字表示)。

答案2

我已经通过以下命令完成了

输入.txt

#include "..\includes\common.h"

命令:

 sed 's/\\/\//g' input.txt

输出

#include "../includes/common.h"

相关内容