Linux 명령 출력에서 ​​열 너비를 조정하는 방법

Linux 명령 출력에서 ​​열 너비를 조정하는 방법

Red Hat Linux에서 이 명령을 사용했을 때

/usr/sbin/ss -i

아래에서 다음과 같은 결과를 얻습니다.

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

grep해당 명령으로 파이프하려고 할 때마다 ex:

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

이 출력이 있습니다

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>

grep에는 다음이 포함되지 않았습니다.

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

왜냐하면 다른 회선에 있기 때문입니다. 그렇다면 이 명령이나 해당 문제에 대한 다른 Linux 명령을 사용할 때마다 열 너비를 어떻게 조정합니까? 출력이 자동 줄바꿈되거나 다음 줄로 이동되지 않도록 하시겠습니까? 이를 수행하는 더 좋은 방법이 있습니까?

답변1

grep에 있는 경우 -A1옵션을 사용해 보세요.

줄바꿈을 한 경우는 아니고, 항목이 별도의 줄에 있는 것으로 보입니다.

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

Context Line Control를 보세요 man grep.

대안은 다음을 사용하는 것입니다.

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

다음과 같이:

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

그러면 컨텍스트가 제공하는 주변 대시를 얻을 수 없습니다.


대안은 sed일 수 있습니다:

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

이상한:

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

답변2

이 줄은 항상 이러한 유형의 정보 형식을 지정하는 방식이므로 줄 ts sack ...아래에 배치됩니다 . 줄 바꿈되지 않습니다. 플래그를 사용하여 두 줄을 모두 포함할 수 있습니다 .ESTAB ...ssgrep-A1

ss -i | grep <IP ADDRESS> -A1

다음 명령 을 통해 각 일치 항목을 전달하여 한 줄로 결합할 수 있습니다 sed.

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

관련 정보