指定されたネットワークポートに連続した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システムに存在する必要があります。