ну наконец-то я разобрался со следующей строкой:
awk '$1 ~ /m.o./ { n=NR+3}n && $3+0 > 0 { n=0 } {if ( n != 0 && $2 != "1" && $3+0 < 0) { count++; }} END { print count }' input
Проблема раньше заключалась в том, что каждое выражение, казалось, действовало на весь документ независимо, поэтому я не мог заставить условие работать только в пределах диапазона строк, что привело к подсчету многих других строк, которые я не учел. хотите, чтобы вас считали. Я продолжал получать значения больше, чем правильный ответ 3.
Например, при использовании флагов --, которые казались распространенным решением этой проблемы в сети --, казалось, что флаги не активировались в соответствующих строках, или подсчет происходил за пределами диапазона строк. разрешено флагами. Он считал линии, которые даже не были частью моего шаблона. В коде Inian исключались строки с шаблоном >>>> (, которые по какой-то причине возвращали совпадение счетчика ), но были и другие шаблоны, которые не совпадали, и было неразумно находить их все с 20 тыс. строк в документ.
Это то, что наконец сработало для меня.
$1 ~ /m.o./ { n=NR+3}n
таким образом сценарий начинался с первого экземпляра, где $1 содержал «m.o.». Мне нужно было указать $1, чтобы избежать второго появления шаблона m.o. в сценарии. К счастью, второй экземпляр был за 2 доллара, поэтому я избежал его, сопоставив только за 1 доллар. Я не знаю, как этого избежать, если оба были в одном столбце.
В момент совпадения n определяется как номер строки (NR )плюс 3 в скобках, затем как-то записывается путем добавления его снова вне скобок. Таким образом, я, кажется, могу использовать awk, чтобы начать с шаблона плюс произвольное количество строк.
&& $3+0 > 0 {n=0}
Это позволяет мне заканчивать диапазон строк в соответствии с переменным условием, а не в соответствии с шаблоном (многие другие решения в Интернете сопоставляют определенный строковый шаблон, используя /pattern/ для определения конца диапазона строк, который Я не мог понять, как адаптировать здесь ).
Я полагаю, что && поддерживает сопоставление шаблона с предыдущим, чтобы связать начальную точку, а затем для любой последующей точки в документе, где $3 > 0 (мое условие ), n становится равным нулю.
Наконец, у меня есть способ связать начальную и конечную строки.
Теперь я могу применить желаемую функцию в пределах этого диапазона, а именно подсчет строк в соответствии с условием.
{if ( n != 0 && $2 != "1" && $3+0 < 0) { count++; }}
Я остаюсь в пределах своего диапазона строк, вызывая первый член. :Если n не равно нулю, что имеет место только в случае совпадения моего шаблона и условий, которые я установил. В пределах этого диапазона строк сценарий извлекает строки, в которых $2 не равно 1, а $3 является отрицательным. Это увеличивает мою переменную count на 1 для каждого экземпляра.
END { print count }' input
В конце скрипта выводится суммарное количество переменных для моего входного файла.
В Gnu/Linux есть выбор оконных -менеджеров (и сред рабочего стола)
Смена диспетчера окон аналогична смене -версии MS Windows, но без выхода из системы или закрытия каких-либо приложений.
Я не знаю, какой оконный менеджер kali использует (, вероятно, простой, с низким уровнем ресурсов ). Я знаю, что многие оконные менеджеры поддерживают то, что вы пытаетесь сделать.
Я использую KDE Plasma (Диспетчер окон и среда рабочего стола ). Он поддерживает то, что вы пытаетесь сделать (, как и другие ). KDE Plasma также поддерживает все остальное, что я видел в системе MS -Windows, и многое другое (Для изменения разделения экрана требовался плагин. Плагин делает немного больше, чем MS).