понедельник, декабря 26, 2005

Обработка текстовых файлов в Unix

Наткнулся на статью, где чел рассматривает несколько способов удаления символов ^M (возврат каретки) из текстовых файлов. По сути это один из способов перевода текстовых файлов из виндусового в юниксовый формат (корректнее было бы заменять последовательности ^M^J на ^J). Получилось наглядное пособие по использованию строк потоковой обработки текста в юниксах - можно брать и затачивать под свои нужды. (Внимание: во всех примерах, кроме perl и awk, ^M - это не символы ^ и M, а управляющая последовательность, которую в юниксовой консоли следует вводить вот так: ctrl-v ctrl-m)

tr -d '^M' < input_filename >output_filename
sed 's/^M$//g' filename > output_filename
awk '{ sub(\"\r$\", \"\"); print }' input_filename > output_filename
perl -p -i -e 's/\r$//' filename
vi -c \"%s/^M//g\" -c \"wq\" filename