我想在包含关键字的行后删除换行符,例如如修饰符private:
,public:
或protected:
以满足我们的编码标准。我需要一个命令行工具(Linux),因此如果需要用户交互,请不要使用Notepad ++,Emacs,VS或Vim解决方案。所以换句话说,我想做一个:
sed -i 's/private:\s*\n\s*\n/private:\n/g'
我已经看到了这个question,但是无法将其扩展到我的需要。
最佳答案
如果我理解正确,则要删除包含private:
,public:
或protected:
的行之后的空行。
sed ':loop;/private:\|public:\|protected:/{n;/^$/d;Tloop}' inputfile
说明:
:loop
创建标签/private:\|public:\|protected:/
将搜索包含模式的行。n;/^$/d
将加载下一行(n
),检查是否为空行(/^$/
),如果是,则删除该行(d
)。如果没有匹配项(行不为空),则
Tloop
分支以标记loop
我不是sed专家,可能会有更优雅的方法来做到这一点。在awk,perl,python中,也许还有更优雅的方法可以做到这一点。
关于command-line - 如何在特定标记后搜索和替换空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8476856/