Мне нужно удалить строку, содержащую «не динамический исполняемый файл», и предыдущую строку из потока с помощью grep, awk, sed или чего-то другого. Моим текущим рабочим решением было бы tr весь поток, чтобы удалить новые строки, затем заменить новую строку, предшествующую моему совпадению, чем-то другим, используя sed, затем использовать tr, чтобы добавить новые строки обратно, а затем использовать grep -v. Я несколько устал от артефактов с этим подходом, но я не вижу, как еще я могу это сделать в данный момент:
tr '\n' '|' | sed 's/|\tnot a dynamic executable/__MY_REMOVE/g' | tr '|' '\n'
РЕДАКТИРОВАТЬ:
Ввод представляет собой список смешанных файлов, переданных в xargs ldd, в основном я хочу игнорировать все выходные данные о небиблиотечных файлах, поскольку это не имеет ничего общего с тем, что я делаю дальше. Я не хотел использовать маску lib*.so, так как это могло бы быть по-другому.