このコードを bash スクリプトで使用して、複数の 16 進文字列を含むファイルを読み取り、何らかの置換を行ってから、新しいファイルに書き込みます。約 300Mb の場合、約 30 分かかります。
これがより速くできるかどうか疑問に思っていますか?
sed 's,[0-9A-Z]\{2\},\\\\x&,g' ${in_file} | while read line; do
printf "%b" ${line} >> ${out_file}
printf '\000\000' >> ${out_file}
done
アップデート:
いくつかのテストを行ったところ、次の結果が得られました。
勝者は:
sed 's,[0-9A-Z]\{2\},\\\\x&,g' ${in_file} | while read line; do
printf "%b" ${line} >> ${out_file}
printf '\000\000' >> ${out_file}
done
実 44m27.021s
ユーザー 29m17.640s
sys 15m1.070s
sed 's,[0-9A-Z]\{2\},\\\\x&,g' ${in_file} | while read line; do
printf '%b\000\000' ${line}
done >> ${out_file}
実 18m50.288s
ユーザー 8m46.400s
sys 10m10.170s
export LANG=C
sed 's/$/0000/' ${in_file} | xxd -r -ps >> ${out_file}
実 0m31.528s
ユーザー 0m1.850s
システム 0m29.450s