Остановите netcat, когда VirtualBox закроется

Вот несколько предложений:

  • 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' файл
     
1
26.05.2014, 23:43
2 ответа
[1178600]Это можно сделать с помощью:

Фона вашего nc | lpr pipeline

Опрос состояния VM

Убийство фонового трубопровода при смерти VM.

К счастью, VBoxManage предоставляет способ сделать (3). VBoxManage имеет команду [1179068]showvminfo[1179069], которая может дать вам текущее состояние vm.

Обратите внимание, что в настоящее время эта команда обрабатывает только "запущенный" против всего остального. Могут быть и другие состояния, которые вы захотите учесть в выписке по делу. Вы можете потенциально упростить первое состояние в цикле, используя аргумент netcat's -k (так что Вам не придется зацикливаться вообще)[1178607].

1
27.01.2020, 23:52
[1184230] Я сдаюсь! Решил проблемы с соединением, используя ncat вместо nc, и отказался от фоновой штуки, так как не смог заставить ее работать. Следующее работает и выключает процессы на выходе.
0
27.01.2020, 23:52

Теги

Похожие вопросы