我希望在包含关键字的行后删除换行符,例如像修饰符private:
,public:
或protected:
来完成我们的编码标准。我需要一个命令行工具(Linux),所以如果需要用户交互,请不要使用Notepad ++,Emacs,VS或Vim解决方案。换句话说,我想做一个:
sed -i 's/private:\s*\n\s*\n/private:\n/g'
我见过这个question但是无法将其扩展到我的需要。
答案 0 :(得分:1)
如果我理解正确,您希望删除包含private:
,public:
或protected:
的行后面的空行。
sed ':loop;/private:\|public:\|protected:/{n;/^$/d;Tloop}' inputfile
说明:
:loop
创建标签/private:\|public:\|protected:/
将搜索包含该模式的行。n;/^$/d
将加载下一行(n
),检查它是否为空行(/^$/
),如果是,则删除该行(d
)。Tloop
分支到标签loop
我不是大师,可能有更优雅的方法来做到这一点。在awk,perl,python等等中也可能有更优雅的方法。
答案 1 :(得分:0)
perl -0777 -pi -e 's/([ \t\r]*)(private|protected|public):[ \t\r]*\n[ \t\r]*\n/$1$2:\n/g' file
应该做的伎俩,同时也考虑尾随和领先的空白,我没有在问题中指明,因为这不是必须要求。