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 ...
ss
grep
-A1
ss -i | grep <IP ADDRESS> -A1
명령을 통해 각 일치 항목을 전달하고 이를 한 줄로 병합할 수 있습니다 sed
.
ss -i | grep <IP ADDRESS> -A1 | sed '/^--$/d;N;s/\n/ /g'