【发布时间】:2019-06-01 11:42:56
【问题描述】:
我有几个 C 源文件需要更改一个特定的格式化功能。在文件的某些部分,
if (x == NULL) {
...
}
需要改成
if (x == NULL)
{
...
}
我希望使用“缩进”命令,但它太激进了。它想用所有选项改变整个文件。
我想我可以在 Perl 甚至 Sed 中做到这一点,但我对这两者都不太了解。
【问题讨论】:
-
使用
sed将在不了解c语法的情况下完成此操作。这可能会导致进一步的问题。Indent是安全的选择。虽然一种方法是sed ' /if/ s/{$/\n&/g'用于所有具有if语句的行,或者只是sed ' s/{$/\n&/g'用于所有行。确保在尝试这些命令之前保留文件的副本。 -
indent的输出将是有效的 C 代码。你不能对任何给定的sed或perl命令的输出说同样的话。indent有很多选项-假设您的代码遵循一些约定(它应该),它们的某些组合将满足您的需要,因此您只需要告诉 indent 遵循哪些约定以不修改已经遵循这些约定的其余代码。 -
为什么要改?
-
@EdMorton "
indent的输出将是有效的 C 代码。" 哈哈,不。indent也没有真正解析 C。您总是需要手动检查结果。 -
@melpomene 谢谢你的例子,但说真的,如果你写了,那么你应该让它休息。
标签: c perl sed indentation