У меня есть файл, который используется только \n
для новых строк, но мне нужно, чтобы он был \r\n
для каждой новой строки. Как я могу это сделать?
Например, я решил это с помощью Vim :%s/\n/\r\n/g
, но я хотел бы использовать скрипт или приложение командной строки. Какие-либо предложения?
Я попытался найти это с помощью sed
или grep
, но меня сразу смутили обходные пути escape-последовательности (я немного зелен от этих команд).
Если интересно, заявка связана с моим вопросом / ответом здесь
CR
перед каждым LF, только перед теми LF, которым еще не предшествует один (и только один) CR.'\r'
сsed
трюком.Это именно то, что
unix2dos
делает:Это заменит
file.txt
на месте версию с окончанием строки CRLF.Если вы хотите сделать это
sed
, вы можете вставить возврат каретки в конце каждой строки:Это заменяет (
s
) область нулевого размера прямо перед концом строки ($
) на\r
. Чтобы выполнить замену на месте (как этоunix2dos
делается), используйтеsed -i.bak
, хотя это нестандартное расширение - если у вас его нет, используйте временный файл.источник
\r
в замен не является портативным. По крайней мере, это не будет работать в Mac OSX.u2d
,ux2dos
,todos
команды вокруг , а также.Если вы выполняете преобразование на компьютере с Unix (OS X, Linux), откройте файл с помощью
vi
илиvim
:нажмите клавишу ESC, чтобы убедиться, что вы не находитесь в режиме вставки, затем введите
или
Это делает преобразование на месте, устанавливая формат файла.
Для записи файла и выхода из редактора используйте
В командной строке вы можете сделать
источник
Делать это с POSIX сложно:
POSIX Sed не поддерживает
\r
или\15
. Даже если это так, опция на месте-i
не POSIXPOSIX Awk поддерживает
\r
и\15
, однако,-i inplace
опция не POSIXd2u и dos2unix не POSIX утилит , но бывший есть
POSIX бывший не поддерживает
\r
,\15
,\n
или\12
Чтобы удалить возврат каретки:
Чтобы добавить возврат каретки:
источник
Переносимая функция оболочки, которая сделает это:
С этим вы можете сделать:
источник
В awk вы можете попробовать
Или
$'\r'
Является примером стиля ANSI-C процитировать , как поддерживается несколькими оболочками , какksh93
,bash
,zsh
,mksh
и FreeBSD ,sh
и , вероятно, будут включены в выпуске 8 спецификации Single Unix .Он предлагает общий способ выражения странных символов, попробуйте это, например:
источник