我需要一个(sed、awk)shell 脚本,或者更好的是,一个 Vim 命令来删除带有单个左大括号的行后面的任何空白行。例如,
void func()
{
foo();
}
void bar()
{
helloWorld();
}
应该变成
void func()
{
foo();
}
void bar()
{
helloWorld();
}
有什么想法吗?
最佳答案
试试这个:
$ awk 'NF{f=0}/^ *{/{ f=1 } f==1 && !NF{next}1' file
void func()
{
foo();
}
一些解释:
-
/^ *{/
表示在第一个{
之前搜索 0 个或多个空格. - 然后将标志设置为 true (
f=1
)。 - 当读取下一行时
f
是真的并且!NF
(意味着没有字段,即该行为空),使用next
跳过行. - 当下一行不是空行时(即
NF{f=0}
表示切换回标志),其余行将不会受到影响,直到下一个左大括号为止。
关于Unix shell 脚本删除左括号后面的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2109026/