bash 编程中是否有写入文件缓冲区?如果有的话,是否可以改变它的大小。
这是问题
我有一个 bash 脚本,它逐行读取文件,然后操作读取的数据,然后将结果写入另一个文件。像这样的东西
while read line
some grep, but and sed
echo and append to another file
输入数据非常庞大(将近 20GB 的文本文件)。进度很慢,所以出现了一个问题,如果 bash 的默认行为是将结果写入每个读取行的输出文件,那么进度会很慢。
所以我想知道,是否有任何机制来缓冲一些输出然后将该块写入文件?我在互联网上搜索了有关此问题的信息,但没有找到任何有用的信息...
是操作系统相关的问题还是 bash?操作系统是centos release 6。
脚本是
#!/bin/bash
BENCH=$1
grep "CPU 0" $BENCH > `pwd`/$BENCH.cpu0
grep -oP '(?<=<[vp]:0x)[0-9a-z]+' `pwd`/$BENCH.cpu0 | sed 'N;s/\n/ /' | tr '[:lower:]' '[:upper:]' > `pwd`/$BENCH.cpu0.data.VP
echo "grep done"
while read line ; do
w1=`echo $line | cut -d ' ' -f1`
w11=`echo "ibase=16; $w1" | bc`
w2=`echo $line | cut -d ' ' -f2`
w22=`echo "ibase=16; $w2" | bc`
echo $w11 $w22 >> `pwd`/$BENCH.cpu0.data.VP.decimal
done <"`pwd`/$BENCH.cpu0.data.VP"
echo "convertion done"