Убедитесь, что у вас установлены пакеты nvidia
и nvidia-libgl
из официальных репозиториев. Кроме того, mesa-libgl
плохо работает ни с одним из этих пакетов, поэтому убедитесь, что этот пакет не установлен.
Использование awk :
$ awk 'BEGIN{RS="-------------"};/KEY:ZZ/&&/ord:chandru/{print RS$0}' sample.txt|egrep -v "^ *$"
Вывод:
-------------
ord:chandru SAM
XY DUPL
KEY:Z
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
Это должно быть довольно надежно
$ sed -n '1p; /ord:chandru/ {
N
N
/KEY:ZZ/{
N
/ord:chandru.*\n.*\n.*KEY:ZZ.*\n---.*/p
}
}' file
-n
не печатайте, пока мы не попросим что-то 1p
напечатайте первую строку, предполагая, что это даст нам строку дефисов (после этого мы печатаем только завершающие строки дефисов) / ord: chandru /
найти шаблон N
прочитать следующий строка, чтобы мы могли использовать символ \ n
для представления новой строки p
напечатайте совпадающие строки Если у вас есть GNU awk
Я бы предложил что-то вроде этого:
gawk 'BEGIN{RS="-+\n"} $0=="" || /ord:chandru/ && /KEY:ZZ/ {ORS=RT; print}' sample.txt
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------
$ 0 == ""
просто принудительно печатает пустые записи (именно так будет интерпретироваться первая строка вашего файла, если вы считаете, записи должны быть разделены строками дефисов).
Если у вас нет gawk
, то на самом деле единственная разница состоит в том, что вы не можете легко захватить разделитель записей - в приведенном вами примере это не так уж и много проблема, поскольку это фиксированная строка. Так, например, с mawk
:
mawk 'BEGIN{RS="-------------\n"; ORS=RS} $0=="" || /ord:chandru/ && /KEY:ZZ/ {print}' sample.txt
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------
ord:chandru SAM
XY DUPL
KEY:ZZ
-------------
sed -e '
/^ord:/,/^--*$/!b
H; /^ord:/h
/^--*$/!d; g
/^ord:chandru[ ]/!d
/\n[ ]*KEY:ZZ\n--*$/!d
' sample.txt
Краткое содержание:
/../,/../
=> - оператор диапазона для выбора диапазона строк, например, в вашем случае от / ord: / до / ---- /
.
Мы перемещаем эти диапазоны (диапазон за раз) в зону трюма. Затем, когда мы находимся в конце диапазона / --- /
, мы знаем, что пришло время выбрать или отклонить этот конкретный диапазон на основе критериев, которые `a) / ord: chandru / && b ) / ключ: ZZ / '