我的文件有很多换行符,如下所示:
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.
如何在这种情况下删除换行符?
答案 0 :(得分:3)
这就是我想到的:
$ sed -n '/}$/{h;:a;n;/^$\|}$/{H;$!ba};H;g;s@}\n*@}@g};p' input.txt
背后的想法是:
empty lines
和 lines endswith '}'
}\n*
}
答案 1 :(得分:1)
您可以使用支持正则表达式的编辑器并在文件中进行替换。替换:
}$\n\n
与
}
如果您需要以编程方式执行此操作,则应用相同的原则(即使用正则表达式替换字符串),但实际答案显然取决于语言/环境。
答案 2 :(得分:1)
这可能对您有用:
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