Cómo ajustar el ancho de la columna en la salida del command de Linux

Cuando utilicé este command en Red Hat Linux

/usr/sbin/ss -i 

Obtengo el siguiente resultado a continuación:

 State Recv-Q Send-Q Local Address:Port Peer Address:Port ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ts sack wscale:2,2 rto:204 rtt:4.5/6.5 ato:40 cwnd:3 ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ts sack wscale:2,2 rto:213 rtt:13.875/18.5 ato:40 ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ts sack wscale:2,2 rto:201 rtt:1.875/0.75 ato:40 ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ts sack wscale:9,2 rto:201 rtt:1.875/0.75 ato:40 

Cada vez que bash conectar grep a ese command ex :

 /usr/sbin/ss -i | grep <SOME_IP_ADD> 

Tengo esta salida

 ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> ESTAB 0 0 <IP_ADD:PORT> <IP_ADD:PORT> 

Tenga en count que grep no incluyó esto:

 ts sack wscale:2,2 rto:204 rtt:4.5/6.5 ato:40 cwnd:3 

porque está en otra línea. Entonces, ¿cómo puedo ajustar el ancho de la columna cada vez que uso este command u otros commands de Linux para el caso? ¿Para que la salida no se ajuste a la palabra o vaya a la siguiente línea? ¿Son sus mejores forms de hacer esto?

Si tu grep lo tiene, testing la opción -A1 .

Parece que no es un caso de envoltura, sino que la input está en una línea separada.

 /usr/sbin/ss -i | grep -A1 <SOME_IP_ADD> 

Mira Context Line Control en man grep .

Una alternativa sería usar

 -P Perl-regex -z suppress-newline -o print only matching 

como en:

 ss -i | grep -Pzo '.*IPADDRESS.*\n.*' 

Entonces no obtendrá los guiones circundantes que proporciona el context.


Una alternativa podría ser sed:

 sed -n '/IPADDRESS/{N;p}' # Or joining the two lines by: ss -i | sed -n '/IPADDRESS/N;s/\n/ /p' 

awk:

 awk '/IPADDRESS/{print; getline; print}' # Or as joined lines: awk '/IPADDRESS/{printf "%s ", $0; getline; print}' 

La línea ts sack ... se coloca debajo de la línea ESTAB ... porque así es como ss formatea este tipo de información. No está siendo envuelto en línea. Puede include ambas líneas en grep usando el indicador -A1 :

 ss -i | grep <IP ADDRESS> -A1 

Puede combinar cada coincidencia en una línea pasándola a través de un command sed :

 ss -i | grep <IP ADDRESS> -A1 | sed '/^--$/d;N;s/\n/ /g'