Есть ли команда 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$//'