Невозможно удалить возврат каретки - PullRequest
0 голосов
/ 18 февраля 2011

Привет!

Мне было поручено создать отчет о файлах, которые мы получаем от наших поставщиков оборудования.Мне нужно выполнить поиск этих файлов для двух полей «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".Мой босс хочет, чтобы «Model-Manufacturer» показывалось как «Test_Version», т.е.

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 18 февраля 2011

Попробуйте:

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

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

1 голос
/ 18 февраля 2011

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

tr -d '\r' < file
0 голосов
/ 18 февраля 2011

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

sed -e 's /// g '

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

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

...