Вот несколько предложений:
grep
grep -P 'CST | inet | RX p' file
Это напечатает все строки, содержащие CST
или inet
, за которыми следует пробел или RX pa
. -P
активирует Perl-совместимые регулярные выражения, что позволяет нам использовать |
как логическое ИЛИ. Вы также можете добиться того же с помощью любого из
grep -E 'CST | inet | RX p' file
или
grep 'CST \ | inet \ | RX p' файл
sed
sed -n '/ CST \ | inet \ | RX p / p' файл
sed -rn '/ CST | inet | RX p / p' файл
Та же идея, что и выше, -n
подавляет печать любых строк, а // p
означает печать тех строк, которые соответствуют шаблону.
perl
Вы можете использовать тот же подход в Perl:
perl -ne 'print if / CST | inet | RX p /' file
Или вы можете сделать что-то вроде
perl -ne '$ k = 1 if / CST /; напечатать, если $ k == 1 || $ k == 3 || $ k == 6; $ k ++ 'файл
Здесь переменная $ k
устанавливается в 1, если строка соответствует CST
, и увеличивается на единицу после чтения каждой строки. Строка затем печатается, если $ k
имеет значение 1,3 или 6. Это более расширяемый подход.
В качестве альтернативы, если вы знаете номера строк, которые хотите напечатать, было бы просто распечатать их напрямую ( $.
- текущий номер строки):
perl -ne 'print if $ . == 1 || $. == 3 || $. == 6 || $. == 11 || $. == 13 || $. == 16 'файл
или, более идиоматично:
perl -ne '@ d = (1,3,6,11,13,16); напечатать, если файл $.~~@d '
Наконец, вы также можете загрузить весь файл в память и распечатать только те строки, которые вам нужны:
perl -e '@F = <>; напечатать @F [0,2,5,10,12,15] 'файл
awk
Вы можете использовать те же базовые подходы в awk
, где NR
- текущий номер строки:
awk '/ CST | inet | RX p /' файл
или
awk '{if (/ CST /) {k = 1} if (k == 1 || k == 3 || k == 6) {print} k ++;}' файл
или
awk 'NR == 1 || NR == 3 || NR == 6 || NR == 11 || NR == 13 || NR == 16' файл
Фона вашего nc | lpr pipeline
Опрос состояния VM
Убийство фонового трубопровода при смерти VM.
К счастью, VBoxManage предоставляет способ сделать (3). VBoxManage имеет команду [1179068]showvminfo[1179069], которая может дать вам текущее состояние vm.
Обратите внимание, что в настоящее время эта команда обрабатывает только "запущенный" против всего остального. Могут быть и другие состояния, которые вы захотите учесть в выписке по делу. Вы можете потенциально упростить первое состояние в цикле, используя аргумент netcat's -k (так что Вам не придется зацикливаться вообще)[1178607].