>

내가 달릴 때

for i in {1..2000}; do sleep 0.1 && echo $(netstat -s | grep -i syns); done | uniq

나는 식 $(netstat -s | grep -i syns) 때 실시간으로 볼 수 있습니다  변경합니다.

그러나 파이프의 출력을 수정하고 싶을 때 :

for i in {1..2000}; do sleep 0.1 && echo $(netstat -s | grep -i syns); done | uniq | while read line; do echo $(date) $line; done

실시간 동작이 유실되었습니다. uniq 의 출력을 사용하는 방법  추가 조작, 특히 각 입력 행 변경에 날짜를 추가 하시겠습니까?

  • 답변 # 1

    아마도 버퍼링 만 변경하면됩니다 :

    # buffering totally off
    stdbuf -i0 -o0 -e0 command
    # buffering per line only
    stdbuf -oL -eL command
    
    

    여기서 효과가 있습니다 ... 결과가 다를 수 있습니다. 작동하지 않으면 다른 명령 앞에 넣으십시오 (bash 내장이기 때문에 읽지 말고 읽지 마십시오).

    for i in {1..2000}; do
        sleep 0.1 && echo $(netstat -s | grep -i syns)
    done \
    | stdbuf -oL -eL uniq | while read line; do
        echo $(date) $line
    done
    
    

  • 이전 sed - 텍스트 파일에서 백 슬래시 제거
  • 다음 desktop - fedora 15에서 시스템 정지 - 그래픽 문제?