trを使用して改行文字をnullに変換してストリームの出力を停止します。

trを使用して改行文字をnullに変換してストリームの出力を停止します。

使っています見たそしてジャック美しく印刷されたJSONログストリームを取得するためにいくつかのフィルタリングを追加しましたが、以下に出力はありません。ただ停止しています。

saw watch /aws/ecs/container-log \
| sed -e 's/^\[.*\] \(.*\)(.*)/\1/' \
| tr '\n' '\0' \
| xargs -0 -n1 jq .
>

saw watchストリーミングコンテナログは次のとおりですtail -f log.file。タイムスタンプとログIDをフィルタリングするために使用され、sed残りはJSONのみです。

ちょうど視聴した後、sedログストリームの先頭を正しくフィルタリングしました。

saw watch /aws/ecs/container-log \
| sed -e 's/^\[.*\] \(.*\)(.*)/\1/'
> {"data": "..."}

しかし、もう一度追加するとtr再び停止します。

saw watch /aws/ecs/container-log \
| sed -e 's/^\[.*\] \(.*\)(.*)/\1/' \
| tr '\n' '\0'
>

しかし、うまくtr動作しますecho

echo hey | hexdump -c
> 0000000   h   e   y  \n
> 0000004
echo hey | tr '\n' '\0' | hexdump -c
> 0000000   h   e   y  \0
> 0000004

原因は何ですか?どうすれば解決できますか?

私はそれを使用しています

  • zsh 5.8(x86_64-apple-darwin19.3.0)
  • MacOS 10.15.3
  • coreutils: stable 8.31 (brew 経由でインストール)
  • coreutilsのtr

sedバージョンが見つかりませんが、man sedタグが付けられていますBSD May 10, 2005

関連情報