У меня есть файл, который выглядит следующим образом:BASH - Выборочное удаление
Guest-List 1
All present
Guest-list 2
All present
Guest-List 3
Guest-list 4
All present
Guest-list 5
Я хочу, чтобы удалить строку, содержащую «Все присутствующие» и его название (линия чуть выше «Все присутствующие»). Желательным результатом будет:
Guest-List 3
Guest-list 5
Я заинтересован в реализации этого с использованием sed. Потому что я новичок, другие возможные решения без sed также будут оценены (при ответе, пожалуйста, предоставьте подробное объяснение, чтобы я мог узнать):)
(Я знаю, что может удалить строку, соответствующую регулярному выражению, и может сохранить строку над ним, отправляя его в буфер удержания, что-то вроде этого: sed '/^.*present$/d; h' ... тогда команда «g» копирует буфер удержания обратно в пространство шаблона ... но как могу ли я сказать sed, чтобы удалить это?)
Заранее благодарен!
Я попытался добавить верхнюю строку, сказав «Привет», но кажется, что ее удалили. Мои извинения. – DMS
Каждый раз, когда вы общаетесь с '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' s ' Вся эта глупость была необходима, когда 'sed' был впервые изобретен как потоковая версия' ed', но устарел, когда 'awk' был изобретен несколько лет спустя, в середине 1970-х годов. Лучше всего я могу сказать, что люди все еще используют эти конструкторы sed сегодня просто для того, чтобы попытаться заставить его работать, например, решить сложную загадку. –