免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2113 | 回复: 3
打印 上一主题 下一主题

[文本处理] 请教:每次统计新接收到的文件行数,将结果累加到指定文件中 [复制链接]

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-10 06:20:00每日论坛发贴之星
日期:2015-10-10 06:20:00程序设计版块每日发帖之星
日期:2015-10-11 06:20:00程序设计版块每日发帖之星
日期:2015-10-25 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-09-23 10:01 |只看该作者 |倒序浏览
如题。
目的是把每天新接收到的目录/A下的文件的行数统计出来,
把结果累加到目录/countfile/相对应的文件中。
目录/countfile/下的文件中只记录相对应目录A下的文件的行数。

20150923,目录A下新接收到的数据
$ls -l /A/*
a1.txt
a2.txt

$cat a1.txt
header
111111111
222222222
footber

$cat a2.txt
header
333333333
444444444
555555555
footer
-------------------
目录/countfile下对20150922下文件的统计结果。
$ls -l /countfile/*
a1.txt
a2.txt

$cat a1.txt
5

$cat a2.txt
6
--------------------

程序如下,执行之后,目录/countfile下的文件行数变为
$cat a1.txt
7

$cat a2.txt
9
-----------------------------------------
写了一个程序,执行的时候出问题,请高手指点程序哪块有问题?
是否有其它更好的办法实现?
-----------------------------------------
for id in $(ls -l /A/*);
do
#如果文件不存在,输出0件。
if [ ! -f "id" ]; then
   $sum_count=0
   echo -e "$(`expr $sum_count`)" > /count_file/$id
else
   #更新到20150922为止,目录/count_file/下文件的件数。
   $sum_count=`cat /count_file/$id`
   #统计20150923新接收到的文件件数(不包含header和footer)
   $record_count=`expr $(wc -l < /A/$id) -2`
   echo -e "$(`expr $sum_count + $record_count`)" > /countfile/$id
fi
done;   
-----------------------------------------

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
2 [报告]
发表于 2015-09-23 11:05 |只看该作者
  1. #!/bin/bash
  2. SOURCE_PATH="/XXOO/"
  3. COUNT_PATH="/OOXX/"
  4. for i in $(find $SOURCE_PATH -type f)
  5. do
  6.         date +%F > ${COUNT_PATH}${i##*/}
  7.         grep -c . $i >> ${COUNT_PATH}${i##*/}
  8. done
复制代码

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-10 06:20:00每日论坛发贴之星
日期:2015-10-10 06:20:00程序设计版块每日发帖之星
日期:2015-10-11 06:20:00程序设计版块每日发帖之星
日期:2015-10-25 06:20:00
3 [报告]
发表于 2015-09-23 15:26 |只看该作者
本帖最后由 robinhappiness 于 2015-09-23 15:30 编辑
dn833 发表于 2015-09-23 11:05


谢谢你的回复!

请教一下,您的这段程序是否包含如下两个逻辑?
1,如果i在SOURCE_PATH="/XXOO/"目录下不存在,也就是SOURCE_PATH="/XXOO/"目录下为空的时候,
   输出$COUNT_PATH/$i为0件。
2,统计20150923新接收到的文件件数(不包含header和footer),`expr $(wc -l < $SOURCE_PATH/$i) -2`

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
4 [报告]
发表于 2015-09-23 15:58 |只看该作者
1、原文件夹都没有文件的话,那目标文件夹自然也就没有文件
2、想要统计的文件可以有各种需求,那就是find命令多加参数就是了。find有 ! name header and -newermt 20150923这样的写法啊。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP