私はBashでN文字ごとにファイルを読み取るためのいくつかの方法をすでに知っています。
LC_ALL=C
while read -n100 character; do
echo "$character"
done < <(cat "$@" | tr -d '\n')
echo "$character
しかし、これが動作している間、Bashまたはposix / unixツールを使用してこれを行うより速い方法を知りたいです。
これをすばやく行う方法はありますか?
ベストアンサー1
コピーAdminBeeの結果少し簡単なコードを使用してください。
入力データは対応するデータと同じです。
12345678901234
567890123
4567890123456789012
34567890123
10から始めて10文字ごとに:
$ fold -w 1 file | awk 'NR % 10 == 0'
0
0
0
0
0
同じですが、1から始まります。
$ fold -w 1 file | awk 'NR % 10 == 1'
1
1
1
1
1
1
同じですが、2から始まります。
$ fold -w 1 file | awk 'NR % 10 == 2'
2
2
2
2
2
2
パフォーマンスの面では、これはawk
AdminBeeのソリューションと似ていますが、大きな入力(「大きな入力」==上記のテストデータが複数回繰り返される)では少し高速です。
fold -w 1
入力の各文字に対して1行を生成し、改行を削除します。使用される両方のコマンドは標準のPOSIXユーティリティです。