Команда Sed script усекает последнюю строку - PullRequest
0 голосов
/ 24 марта 2010

Я пытаюсь удалить возврат каретки (\r) из файла с помощью следующей команды в AIX, но она также удаляет мою последнюю строку. Есть предложения?

sed -e 's/\r\n/\n/g' ./excprule > ./excprule.tst

Последовательность команд:

dev1:> sed -e 's/\r\n/\n/g' ./test_file > ./test_file.tst
dev1:> diff test_file.tst test_file
diff: 0653-827 Missing newline at the end of file test_file.
26a27
> Trailer 25

Редактировать: Найти обходной путь, выполнив то же самое с Perl, но хотел бы знать, почему это не работает.

1 Ответ

1 голос
/ 24 марта 2010

Вы также можете использовать dos2unix, если он у вас есть в AIX, однако с sed,

sed '$!{:a;N;s/\r\n/\n/;ta}' file

sed удаляет символ новой строки всякий раз, когда обрабатывает текущую строку (см. Справочную страницу), так что вы действительно не найдете \r\n.

...