grep 결과를 기반으로 한 조건부 에코

grep 결과를 기반으로 한 조건부 에코

특정 포트에 얼마나 많은 연결이 있는지 출력하는 다음 명령이 있습니다.

while true
do
    echo -n "number of connections: "
    netstat -an | grep ESTABLISHED | grep -w <Port Number> | wc -l
    date
    printf '\n'
    sleep 0.3
done | grep -v "number of connections: 0"

연결 수가 0이면 아무것도 인쇄하고 싶지 않습니다. 그러나 날짜는 별도의 줄에 인쇄되므로 grep은 date 명령과 함께 작동하지 않습니다.

다음은 몇 가지 샘플 출력입니다.

Tue Nov 17 16:42:48 EST 2020

Tue Nov 17 16:42:49 EST 2020

number of connections: 1
Tue Nov 17 16:42:49 EST 2020

number of connections: 3
Tue Nov 17 16:42:49 EST 2020

number of connections: 2
Tue Nov 17 16:42:50 EST 2020

처음 두 줄은 연결 수가 0일 때 인쇄되는 내용이지만, 내가 원하는 출력(위 출력 예를 기반으로 함)은 다음과 같습니다.

number of connections: 1
Tue Nov 17 16:42:49 EST 2020

number of connections: 3
Tue Nov 17 16:42:49 EST 2020

number of connections: 2
Tue Nov 17 16:42:50 EST 2020

답변1

변수에 카운트 할당

count=$(netstat -an | grep ESTABLISHED | grep -w <Port Number> | wc -l)
if [[ $count -gt 0 ]]; then #issue your echo or printf

관련 정보