我正在寻找一种方法来删除在文件开头或结尾发生的'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后跟'无'或先于'无'?
答案 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