Чи є команда Bash для перетворення \ r \ n в \ n?
Коли я завантажую свої сценарії з Windows в Linux, мені потрібна така утиліта, щоб зробити роботу справною.
dos2unix
є програма Unix / Linux для того, щоб робити те, що ви хочете.
Чи є команда Bash для перетворення \ r \ n в \ n?
Коли я завантажую свої сценарії з Windows в Linux, мені потрібна така утиліта, щоб зробити роботу справною.
dos2unix
є програма Unix / Linux для того, щоб робити те, що ви хочете.
Відповіді:
Переклад ( 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
що може конвертувати закінчення рядків. Вона часто запускається з softlinks до 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$//'