shell大文件读取并处理的问题

来源:互联网 发布:墓碑排版软件 编辑:程序博客网 时间:2024/05/11 00:38


有个文件在/tmp/t.unl下
里面有800万行的数据,每行有8位数字,比如:
00000001
00000002
00000003
00000004
....


这些数字是对应在
/work/0000/00000001
/work/0000/00000002
/work/0000/00000003
/work/0000/00000004
下的文件


求一脚本,使得删除,存在/tmp/t.unl中,并在/work/0000/目录下该文件名的文件。“0000”是“00000004”的前4位
原方案使用
cat /tmp/t.unl |while read tmpf
do
rm the file
done


结果效率非常低,要跑几个小时,怎么才能提高效率呢?




try:


    sed 's,^,rm -rf /work/0000/,' /tmp/t.unl >/tmp/t_unl_rm.sh


    . /tmp/t_unl_rm.sh


复制代码




awk '{system("rm -f /work/"substr($0,1,4)"/"$0)}' /tmp/t.unl


sed 's#....#/work/&/&#' /tmp/t.unl | xargs rm
原创粉丝点击