在开始或结束文件中发生回车的正则表达式

时间:2009-09-16 14:42:11

标签: regex

我正在寻找一种方法来删除在文件开头或结尾发生的'stray'回车。即:

\r\n <-- remove this guy
some stuff to say \r\n
some more stuff to say \r\n
\r\n <-- remove this guy

你如何匹配\ r \ n后跟'无'或先于'无'?

4 个答案:

答案 0 :(得分:3)

试试这个正则表达式:

^(\r\n)+|\r\n(\r\n)+$

答案 1 :(得分:0)

在多线模式下,以下正则表达式取决于语言:

^\r\n|\r\n$

或者这个正则表达式:

\A\r\n|\r\n\z

第一个在例如perl(其中^和$匹配单行模式中行的开头/结尾和多行模式下字符串的开头/结尾)。后者适用于例如红宝石。

答案 2 :(得分:0)

这是一个应该打印出剥离文件的sed版本:

 sed -i .bak -e '/./,$!d' -e :a -e '/^\n*$/{$d;N;ba' -e '}' foo.txt

-i告诉它就地执行编辑,.bak告诉它首先使用.bak扩展名备份原始文件。如果需要关注内存,则可以使用''代替.bak,并且不会进行备份。但是,除非绝对必要,否则我不建议。

第一个命令('/./,$!d'应该删除所有前导空白行),其余的是处理所有尾随空白行。

有关您可以链接在一起的其他有趣内容,请参阅this list of handy sed 1-liners

答案 3 :(得分:0)

^\s+|\s+$

\s is whitespace (space, \r, \n, tab)
+ is saying 1 or more
$ is saying at the end of the input
^ is saying at the start of the input