【发布时间】:2016-03-19 04:28:25
【问题描述】:
我正在尝试使用 sed 单行来使用 handy sed one-liners 之一删除尾随换行符:
sed --in-place -e :a -e '/^\n*$/{$d;N;ba}'
它适用于 UNIX 样式的换行符,但不适用于 DOS 样式的换行符。
尽管我无法完全理解sed 脚本语法和匹配规则,但我尝试了以下方法:
sed --binary --in-place -e :a -e '/^\(\r\?\n\)*$/{$d;N;ba}'
但它没有帮助,我真的不知道为什么。
我真的不想使用 Perl 等,我想坚持使用更多“核心”实用程序。
那么,周围有没有sed 大师?我将衷心感谢您的帮助。
我正在使用 Cygwin 的 sed 分布。
谢谢。
具体来说,我想要这个文件(使用cat -A 打印出来):
1^M$
^M$
^M$
变成这样:
1$
【问题讨论】:
-
dos2unix 文件,然后运行你的 sed 东西。
-
@pvg 我想在我的
.bashrc中创建一个别名,所以如果它是一个单独的命令,我真的很想,因为管道dos2unix和sed比运行sed更棘手一个人。 -
应该不是问题。或者只是让它成为一个 bash 函数,更易于阅读和维护。 stackoverflow.com/questions/756756/…
-
@pvg 是的,但是每个文件都需要单独的
sed(dos2unix等)调用...我知道我可以创建一个函数,但我只是想知道如果我能做得更简单。 -
如果您只想删除文件末尾的换行符而不是文件中间的换行符,那么这不是一个好的输入/输出示例。