大容量ファイルが複数の部分に正しく分割されていることを確認しようとしています。おもちゃの例には、次のファイルがありますout_sample
。
123456789012
123456789012
123456789012
123456789012
123456789012
保存すると64バイトになります。 cutを使用してファイルを6つのチャンクに分割すると、結果ファイルはそれぞれ15バイトになります。
#!/bin/sh
FILENAME="out_sample"
cut -c1-2 $FILENAME > a
cut -c3-4 $FILENAME > b
cut -c5-6 $FILENAME > c
cut -c7-8 $FILENAME > d
cut -c9-10 $FILENAME > e
cut -c11-12 $FILENAME > f
合計は6 * 15 = 90バイトを意味します。元のファイルサイズと新しいファイルサイズの合計の間の26バイトの違いは何ですか?cut
ファイルの末尾に改行文字が追加されたことを確認しました。ファイルごとに1バイトですか?残りはどうですか?
答え1
ファイルから2つの列を切り取ると、cut
各行に改行文字が追加されます。したがって、各出力ファイルは5行で構成され、各行には2つの数字と改行文字があります。
これは、25個の追加バイト(ファイル1〜5、6番目のファイルは列13(入力ファイルの改行)を削除して削除した改行のみを追加する)について説明します。
最後のバイトはどこから来るか。入力ファイルの最後の行に改行を強制的に適用しないエディタを使用しているとします。
したがって、何も失われません。
答え2
split
このアプリケーションでは代わりに使用できますcut
。split -b 15 $FILENAME
ファイルオフセットを直接計算するのではなく、自動的にブックを実行します。
編集:質問を誤って読んだ。split
コマンドは、バイトストリームのチャンクのように列に分割されません。本当に熱単位で必要な場合は、OPのアプローチが最善です。