Команда Awk - объедините две команды

"Цель bgscan заключается в поиске кандидатов в роуминге в одной и той же ESS, поэтому, хотя это может быть не по замыслу, не обновление результатов для других сетей было бы правильным поведением ". -Jouni Malinen

Источник: http://lists.shmoo.com/pipermail/hostap/2015-May/032898.html

0
06.03.2018, 14:03
3 ответа

prueba

... | awk '$1 == "1" {print $2 ; l=NR+1 ; } NR == l { print $1 ;}'

donde

  • $1 == "1"línea de selección donde el primer campo es 1
  • {print $2imprime su valor
  • l=NR+1 ; }recuerda la siguiente línea
  • NR == lseleccionar segunda línea
  • { print $1 ;}imprimir primer campo

recuerda que awk no piensa en términos de columna, solo de campo.

esas dos líneas son equivalentes usando$1$2

 hello world
       hello              world

Asignando a var

... | awk '$1 == "1" {printf "A=%s\n",$2 ; l=NR+1 ; } NR == l { printf "B=%s\n",$1 ;}' > /tmp/.var
. /tmp/.var

la última línea es un punto(.)un espacio()y/tmp/.var

  • printf en awk necesita una coma después del argumento.
2
28.01.2020, 02:32

Podrías usar esto:

sudo iftop -t -L1 -s1 -f "dst host 10.0.0" | grep -E '=>|<=' | cut -c 5- | awk '{ print $1 }'

que devuelve:

10.0.0.255
10.0.0.15

El problema es que el número de "columnas" no es el mismo en las dos líneas siguientes. En el comando anterior, cutse usa para eliminar los primeros 5 caracteres, por lo que elimina el "1".

 1 10.0.0.255                         =>         0b         0b         0b         0B
   10.0.0.15                          <=     1.14Kb     1.14Kb     1.14Kb       291B
0
28.01.2020, 02:32

Сgrep:

... | grep -oP '^\s+\d* \K(\d+\.){3}\d+'
10.0.0.255
10.0.0.15
0
28.01.2020, 02:32

Теги

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