我的文件中有很多换行的,就像这样:卸下两个连续的换行符
This is a line.
This is another line.
我想删除,但只在第一线与}
结束的情况下,例如:
\macro{This is a line.}
This is another line.
这应该成为:
\macro{This is a line.}This is another line.
如何删除换行符在这种情况呢?
我的文件中有很多换行的,就像这样:卸下两个连续的换行符
This is a line.
This is another line.
我想删除,但只在第一线与}
结束的情况下,例如:
\macro{This is a line.}
This is another line.
这应该成为:
\macro{This is a line.}This is another line.
如何删除换行符在这种情况呢?
这是我想通了:
$ sed -n '/}$/{h;:a;n;/^$\|}$/{H;$!ba};H;g;[email protected]}\n*@}@g};p' input.txt
背后的想法是:
empty lines
和lines endswith '}'
}\n*
与}
您可以使用支持正则表达式的编辑器并在您的文件中进行替换。替换:
}$\n\n
与
}
如果您需要以编程方式做到这一点,同样的原则也适用(即使用字符串替换正则表达式),但实际的答案显然将取决于语言/环境。
这可能会为你工作:
sed '$!N;s/}\n$/}/;P;D' file
如果有涉及的空白,尝试:
sed '$!N;s/}\s*\n\s*$/}/;P;D' file
或更正式的:
sed '$!N;s/}[[:space:]]*\n[[:space:]]*$/}/;P;D' file
我的很多文件对于文本编辑器来说打开太大了,而且我还需要从许多文件中删除这些文件,因此这主要是自动完成的atically。 – Village 2012-03-31 07:24:26
对不起,我之前没有注意到bash/sed标签 – BluesRockAddict 2012-03-31 07:51:20