Конвертировать окончания строк

Я использую d2u конвертировать окончания строк. После установки Puppy Linux я заметил, что он не идет с d2u, но dos2unix, Тогда я заметил, что Ubuntu по умолчанию отсутствует.

Как еще можно конвертировать окончания строк?

2 ответа

Решение

Делать это с POSIX сложно:

  • POSIX Sed не поддерживает \r или же \15, Даже если это так, вариант на месте -i это не POSIX

  • POSIX Awk поддерживает \r а также \15, Тем не менее -i inplace вариант не POSIX

  • d2u и dos2unix не являются утилитами POSIX, но ex

  • POSIX ex не поддерживает \r, \15, \n или же \12

Чтобы удалить возврат каретки:

awk 'BEGIN{RS="^$";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

Чтобы добавить возврат каретки:

awk 'BEGIN{RS="^$";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file

Некоторые варианты:

С помощью tr

tr -d '\15\32' < windows.txt > unix.txt

ИЛИ ЖЕ

tr -d '\r' < windows.txt > unix.txt 

С помощью perl

perl -p -e 's/\r$//' < windows.txt > unix.txt

С помощью sed

sed 's/^M$//' windows.txt > unix.txt

ИЛИ ЖЕ

sed 's/\r$//' windows.txt > unix.txt

Чтобы получить ^M , вы должны ввести CTRL-V а потом CTRL-M ,

Другие вопросы по тегам