- 论坛徽章:
- 0
|
大家好
现手头有一批要替换的文本文件,写了个脚本请大家帮忙看一下是否能够再优化一下。这个循环太多了 速度实在是太慢
如下
a.txt
前后是新旧两组号码,要把指定文本的包含的旧号码,换成后面对应的新号码,大概300数据
140200003700.140200042852
142600009182.142600069906
142300003784.142300033332
142600009618.142600084180
142600038153.142600066756
142600002050.142600066015
142300003729.142300033319
142600014686.142600072919
tail 14_10002_2009348_VIP.DAT 这些DAT文件即为要替换的文本,每个DAT文件平均大概3w行数据左右
14,10002,2009348 ,14030065 ,100037,2009-12-21 19:59:37,2.00 ,140300020299,
14,10002,2009348 ,14270093 ,100247,2009-12-21 19:59:37,2.00 ,142700107999,
14,10002,2009348 ,14010023 ,100290,2009-12-21 19:59:37,2.00 ,140100141364
把后面的卡号 用a.txt中的对应内容替换
脚本:
for i in `cat name.txt `
do
cd DIR/$i
for a in `cat DIR/a.txt`
do
old=`echo $a |awk -F . {'print $1'}`
new=`echo $a |awk -F . {'print $2'}`
sed -i s/"${old}"/"${new}"/g DIR/$i/*.DAT
done
done
其中name.txt是一个 目录的列表 ,每个列表下有多个 DAT文件。大概200个目录,500个文件左右。
大家看一下我这个循环是否还能在优化一下 ,我测试了一下 跑起来实在是太慢了 全跑一次 大概要 一整天。。
或者能提供一个能提高一下速度的思路
谢谢
[ 本帖最后由 bugouhen 于 2009-12-28 11:39 编辑 ] |
|