OSX でパイプ コマンドをスロットルしますか?

OSX でパイプ コマンドをスロットルしますか?

からの出力を最大 X 秒ごとに実行するように調整しますgrep。具体的には、次のような操作を行います。

ping 8.8.8.8 | grep "No route to host" | throttle 3s | xargs -I % sh -c 'reset wifi'

答え1

私自身の質問に答えると、この質問ただし、OSX では若干変更されています:

epoch () { date -v+$* "+%s" }

interval () {
    INTERVAL="$*"
    WHEN_TO_RUN=0
    while read LINE; do
        if (( $(epoch 0S) >= $WHEN_TO_RUN )) then
            echo $LINE
            WHEN_TO_RUN="$(epoch $INTERVAL)"
        fi
    done
}

これにより... | interval 3S

関連情報