Bashパイプラインのストリーム処理を使用して連続した単一のデータ行を処理しますか?

Bashパイプラインのストリーム処理を使用して連続した単一のデータ行を処理しますか?

指定されたネットワークポートに連続した1行のテキストを出力する組み込みサーバーをデバッグしています。ストリームどこにも改行文字はありませんがテキストデータなので、出力時の形式を指定したいと思います。ストリームの文字を有効な改行文字に置き換えるためにtr(翻訳)を使用してみましたが、常に改行文字で適切に置き換えることができる唯一の単一文字を見つけることは不可能でした。私の最初の考えは、sedを使用して2-3文字パターンに改行を追加することでしたが、sedは行ベースでストリームは無限の単一行なので、sedはプロセスを完了しません! sedの非ラインベースの代替案はありますか?

ベストアンサー1

fold目的は次のとおりです。

NAME
       fold - wrap each input line to fit in specified width

SYNOPSIS
       fold [OPTION]... [FILE]...

DESCRIPTION
       Wrap input lines in each FILE, writing to standard output.

       With no FILE, or when FILE is -, read standard input.

       Mandatory  arguments  to  long options are mandatory for short options
       too.

       -b, --bytes
              count bytes rather than columns

       -s, --spaces
              break at spaces

       -w, --width=WIDTH
              use WIDTH columns instead of 80

       --help display this help and exit

       --version
              output version information and exit

上に示すように、幅に基づいて行を縮小して100個の文字行を取得します。

command_that_reads_from_port | fold -w 100

これはGNU coreutilsの一部である標準プログラムなので、すべてのGNUシステムに存在する必要があります。

おすすめ記事