Nバイト後にパイプを切り取ります。

Nバイト後にパイプを切り取ります。

情報をファイルに転送するためにパイプを使用していますが、ツールはギガバイトmyTool > file.txt 2>&1のデータを生成できます。最初のNバイト(2MBなど)の後は切り捨てる必要があります。これを行う方法はないようですpv。残念ながら、1行ずつ実行することはオプションではありません(head)。

これを行うための基本的なツールはありませんか?

理想的には、次のように機能しますmyTool | limiter --amount 2M > file.txt 2>&1

答え1

複数の実装でこのオプションをサポートしていheadます-c。 GNU実装はMメガバイトのサフィックスも受け入れ、最新バージョンではMBメガバイト(1,000,000)とMiBメガバイト(1,048,576)もサポートしています。

head -c 2097152
head -c 2M
head -c 2MiB
head -c 2000000
head -c 2MB

を使用すると、を使用してpvサイズを指定でき、を使用して-sサイズに達するとすぐに読み取りを停止するように指示できます-S。繰り返しますが、サフィックスはサポートされていますが、これは1000ではなく1024の累乗です。

pv -Ss 2M
pv -Ss 2097152
pv -Ss 2000000

-q進捗情報が必要ない場合は追加)

GNUを使用すると、dd次のことができます。

dd iflag=fullblock,count_bytes bs=64k count=2097152 status=none
dd iflag=fullblock,count_bytes bs=64k count=2MiB status=none
dd iflag=fullblock,count_bytes bs=64k count=2M status=none
dd iflag=fullblock,count_bytes bs=64k count=2000000 status=none
dd iflag=fullblock,count_bytes bs=64k count=2MB status=none

関連情報