command-line - 如何在特定标记后搜索和替换空行?

标签 command-line replace newline token

我想在包含关键字的行后删除换行符,例如如修饰符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/

相关文章:

linux - 命令行 SFTP 文件浏览器?

javascript - 我想在网站加载时替换所有页面中的一个单词

python - python中带有变量的新行

python 带。无法去除换行符,但使用 f.read()

javascript - 字符串替换 Angular 模板逻辑中的多个字符

c - 忽略 c 中的前导换行符 ("\n")

python - 如何在 Windows 命令行中将运行 Python 的命令制作为脚本?

c# - 无法以编程方式连接到 Mysql

php - 让xgettext查找评论中的关键词

javascript - 正则表达式范围内的转义点