2010-03-24 6 views
0

Я пытаюсь удалить возвращаемые каретки (\r) из файла со следующей командой в AIX, но также удаляет последнюю строку. Какие-либо предложения?Sed script command truncating last line

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 

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

+3

По-видимому, diff жалуется на ваш исходный файл. В основном, он говорит, что он заканчивается символом \ r, в то время как он должен заканчиваться символом \ n. Видимо, ничего плохого в вашей команде sed тогда. – tonio

ответ

1

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

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

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

+0

Я считаю, что удаление '\ r' будет dos2unix? – Cascabel

+0

Да, вы правы, перевернули его. – ghostdog74

+1

Почему бы просто не использовать 'tr '\ r' '' < file.in > file.out'? – tonio

 Смежные вопросы

  • Нет связанных вопросов^_^