Чи є команда 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$//'