Регулярное выражение для возврата каретки в начале или конце файла - PullRequest
0 голосов
/ 16 сентября 2009

Я ищу способ удаления «случайных» возвратов каретки, возникающих в начале или конце файла. то есть:

\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 ]

3 голосов
/ 16 сентября 2009

Попробуйте это регулярное выражение:

^(\r\n)+|\r\n(\r\n)+$
0 голосов
/ 16 сентября 2009

Вот версия sed, которая должна распечатать раздетый файл:

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

-i говорит ему выполнить редактирование на месте, а .bak говорит, что сначала нужно сделать резервную копию оригинала с расширением .bak. Если проблема связана с памятью, вы можете использовать '' вместо .bak, и резервное копирование не будет. Я не рекомендую, если в этом нет крайней необходимости.

Первая команда ('/./,$!d' должна избавить от всех начальных пустых строк), а остальная - обработать все конечные пустые строки.

См. этот список удобных sed 1-строчных для других интересных вещей, которые вы можете связать вместе.

0 голосов
/ 16 сентября 2009

^\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
0 голосов
/ 16 сентября 2009

В зависимости от языка используется либо следующее регулярное выражение в многострочном режиме:

^\r\n|\r\n$

Или это регулярное выражение:

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

Первый работает, например, perl (где ^ и $ соответствуют началу / концу строки в однострочном режиме и началу / концу строки в многострочном режиме). Последний работает, например, в рубин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...