Есть ли команда Bash для преобразования \ r \ n в \ n?
Когда я загружаю свои скрипты из Windows в Linux, мне нужна такая утилита, чтобы все работало.
dos2unix
для Unix / Linux, которая делает то, что вы хотите.
Есть ли команда Bash для преобразования \ r \ n в \ n?
Когда я загружаю свои скрипты из Windows в Linux, мне нужна такая утилита, чтобы все работало.
dos2unix
для Unix / Linux, которая делает то, что вы хотите.
Ответы:
Translate ( tr ) доступен во всех Unixes:
tr -d '\r' # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.
\r
. Они очень необычные, хотя.
Существует утилита Unix, conv
которая может преобразовывать окончания строк. Это часто вызывается с мягкими ссылками на u2d
или d2u
или unix2dos
или или dos2unix
.
Дополнительно есть утилиты под названием fromdos
и todos
.
Использование man 1 ed (который редактирует файлы на месте без какой-либо предыдущей резервной копии - в отличие от: sed .. -i ".bak" ...):
ed -s file <<< $'H\ng/\r*$/s///\nwq'
Делать это с POSIX сложно:
POSIX Sed не поддерживает \r
или \15
. Даже если это так, опция на месте -i
не POSIX
POSIX Awk поддерживает \r
и \15
, однако, -i inplace
опция не POSIX
d2u и dos2unix не POSIX утилит , но бывший есть
POSIX бывший не поддерживает \r
, \15
, \n
или\12
Чтобы удалить возврат каретки:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file
Чтобы добавить возврат каретки:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
Да, используйте dos2unix
. Например:
[justin@mybox ~]$ dos2unix myfile
dos2unix
обычно доступен, иначеsed -e 's/\r$//'