Преобразование строк
Я использовал d2u
для преобразования строк. После установки Puppy Linux I
заметил, что он не приходит с d2u
, но dos2unix
. Затем я заметил, что
Ubuntu отсутствует по умолчанию.
Каков другой способ преобразования окончаний строк?
Ответы
Ответ 1
Выполнение этого с помощью 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
Ответ 2
Некоторые параметры:
Использование 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
.