Может ли grep удалять контекст, но не полную строку? - PullRequest
2 голосов
/ 26 февраля 2020

Я удаляю ключи из файла конфигурации с помощью следующей команды:

cat showrunningconfig.txt | grep -v '[ \t\r\n\v\f]*[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]'

Это удаляет всю строку. Но я хочу удалить только соответствующие шаблоны. У grep есть опция -o, которая показывает только соответствующий шаблон, а не всю строку. Но опция -o не работает в сочетании с -v

Есть идеи? Большое спасибо!

1 Ответ

1 голос
/ 26 февраля 2020

Вы должны использовать sed, если у вас есть частичный шаблон для удаления из строки.

sed -i 's/[[:space:]]*[[:xdigit:]]\{8\}//g' showrunningconfig.txt

См. онлайн-демонстрацию

s="Text A1f4E3D4 and more text"
sed 's/[[:space:]]*[[:xdigit:]]\{8\}//g' <<< "$s"
# => Text and more text

Подробности

  • -i - замена на месте (опция GNU sed)
  • s/[[:space:]]*[[:xdigit:]]\{8\}//g:
    • s - команда замены
    • [[:space:]]* - 0+ пробелов
    • [[:xdigit:]]\{8\} - восемь A-F, a-f и 0-9 символов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...