Не удалось удалить возврат каретки

Привет!

Мне было поручено создать отчет по файлам, которые мы получаем от наших поставщиков оборудования. Мне нужно найти эти файлы для двух полей «Test_Version» и «Model-Manufacturer»; для каждого поля мне нужно зафиксировать соответствующие значения.

В предыдущем сообщении я нашел помощь в создании базового отчета:

    find . -name "*.VER" -exec egrep -A 1 'Test_Version=|Model-Manufacturer:' {} ';' 

Model-Manufacturer:^M
R22-100^M
Test_Version=2.6.3^M
Model-Manufacturer:^M
R16-300^M
Test_Version=2.6.3^M

Однако выходные данные пронизаны кареткой DOS, возвращающей «^M». Мой босс хочет, чтобы «Модель-производитель» отображался как «Test_Version», т.е.

Model-Manufacturer:R22-100
Test_Version=2.6.3
Model-Manufacturer:R16-300
Test_Version=2.6.3

Используя sed, я попытался удалить символы «^M» для «Модель-производитель», но безрезультатно:

find . -name "*.VER" -exec egrep -A 1 'Test_Version=|Model-Manufacturer:' {} ';' | sed 's/Model-Manufacturer:^M//g'

Эта команда не действует. Что мне здесь не хватает?


sed
person Chris    schedule 18.02.2011    source источник


Ответы (3)


Попробуйте это:

sed '/Model-Manufacturer:/s/\r//g'

Если у вас также есть новые строки и вы хотите объединить две строки в одну, вы можете использовать один из методов, показанных в ответах на ваш предыдущий вопрос.

person Dennis Williamson    schedule 18.02.2011

вы можете удалить возврат каретки, используя dos2unix, если он у вас есть. Или используя tr

tr -d '\r' < file
person kurumi    schedule 18.02.2011
comment
Используя tr, мне удалось выполнить команду из командной строки: find . -name "*.VER" -exec egrep -A 1 'Test_Version=|Model-Manufacturer:' {} ';' > tmp1 ; tr -d '^M' <tmp1>tmp2. Однако эта же команда в bash-скрипте ничего не делает!!! Я думаю, что схожу с ума! Помощь! - person Chris; 18.02.2011

Если вы используете Bash в качестве оболочки или создаете скрипт в vi, вы сможете сделать следующее:

sed -e 's/‹Ctrl-V>‹Ctrl-M>//g'

для удаления CR.

Ctrl-V (нажатие клавиши на клавиатуре) буквально вставляет следующее нажатие клавиши, а Ctrl-M — возврат каретки.

person Will Hartung    schedule 18.02.2011