Как удалить этот шаблон с помощью sed или awk? - PullRequest
0 голосов
/ 07 февраля 2020
#======================================================================
#NAME
#======================================================================
gen (
         id  111
         descr  Test 1
         txcd  
                content           
)
#======================================================================
#NAME
#======================================================================
gen (
         id  112
         descr  Test 2
         txcd
                content
)
#======================================================================
#NAME
#======================================================================
gen (
         id  123
         descr  Test 3
         txcd
                content
)

У меня есть этот шаблон, и я попытался найти способ удалить определенный идентификатор с помощью sed или awk. Я передаю идентификатор, используя параметр функции, $ 1. Я посмотрел его в стеке, но не смог найти решение, которое бы сработало для меня.

sed -i "/gen \(/{:a;N;/\)/!ba};/$1/d" file

В определенный момент при редактировании этой команды sed она действительно удаляла строку, но только строка, где был сам идентификатор.

Это та, с которой я работал, я внес небольшие изменения, но пока ничего не получалось. Я должен был также удалить хэштеги сверху, но для начала я в основном пытался удалить шаблон gen.

1 Ответ

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

Если одинокий ) всегда завершает одну запись, это достаточно просто в Awk.

awk -v RS=')' -v ORS=')' '!/id +112/' file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...