Как я избавляюсь от “-” разделитель строки при использовании grep со строками контекста?

У меня есть текстовый файл под названием compare.txt, что я хочу извлечь одну строку, которая следует за каждой строкой, которая содержит шаблон "nmse_gain_constant". Следующая команда получает меня близко:

grep -A 1 nmse_gain_constant compare.txt | grep -v nmse_gain_constant

Но это включает разделитель "-" строка между каждой строкой требуемого текста. Какие-либо легкие идеи, как избавиться от "-" строки?

Я дал бы Вам некоторый текст в качестве примера здесь, но "-" символы ошибочно интерпретируются этим веб-сообщением как управляющие символы и что Вы видели бы, не корректно.

57
задан Amirshk 30 January 2010 в 13:56
поделиться

3 ответа

Одно решение будет:

grep -A 1 nmse_gain_constant compare.txt | grep -v nmse_gain_constant  | grep -v "\-\-"
3
ответ дан 24 November 2019 в 19:24
поделиться

Если вы используете AWK:

awk '/nmse_gain_constant/{getline;print }' compare.txt
8
ответ дан 24 November 2019 в 19:24
поделиться

Ну а коммутатор по умолчанию добавит эти символы, так что это не загадка.

Человек GreeP состояния:

-A NUM

    Places  a  line  containing  a  group  separator  (--)   between
    contiguous  groups  of  matches.  With the -o or --only-matching
    option, this has no effect and a warning is given.

, но вы можете использовать простой SED для очистки результата:

yourgrep | sed '/^--$/d'
20
ответ дан 24 November 2019 в 19:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: