第三次提问:如何用Shell对文件进行操作(分不够可再加)?

dbetter 2004-11-20 07:45:25
现有一data目录每小时会生成八十个文件(由程序自动生成),文件内容包括字符串和数字,其中字符串是AscII码的形式存放,而数字全部是以十六进制格式存放,请问如何完成以下功能?
一、如何在data目录下检测,以一有新的文件生成就马上知道?
二、如何在Shell中查找指定字符串后的数字(16进制形式),找到后转换成十进制,将此数字修改后再转换回十六进制?

刚刚接触UNIX就接触了这个任务,我想这个应该不难,不知道为什么现在是第三贴了还没人能回答?如分不够可再开贴再加,谢谢!
...全文
159 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dbetter 2004-11-22
  • 打赏
  • 举报
回复
那第二个呢?或者用Perl怎么实现?代码是什么?
fall_2008 2004-11-22
  • 打赏
  • 举报
回复
试一试第一问:用一个循环监测data 文件夹的内容

#watchnew: watch file created or deleted.

PATH=/bin:/usr/bin
new=/tmp/filelist1.$$
old=/tmp/filelist2.$$

> $old

while :
do
ls /data >$new
diff $old $new
mv $new $old
sleep 60
done | awk '/>/{$1="created:";print}
/</{$1="deleted:";print}'
wti 2004-11-22
  • 打赏
  • 举报
回复
用perl转换16进制到10进制,10进制到十六进制用oct.
$a = oct 0x11;
print $a; # get 15 here.

察看是否有新邮件可以用opendir 和 readdir 函数,定时执行用sleep,也可以用find -mmin
onlyf 2004-11-21
  • 打赏
  • 举报
回复
一、你可以使用crontab,定时检测;也可以使用进程间通信,由文件生成程序通知检测程序。
二、主要看你的文件内容格式了,格式不同采用的shell语句也不同,实现应该不难。
dbetter 2004-11-21
  • 打赏
  • 举报
回复
不知道怎么样用Shell来查找16进制数据,所以困在这了。
因为系统管理员不让编译,所以只能用Shell,不过好像Perl也是不用编译的?请哪位大侠给出实际可用的代码啊,100分马上奉上!!!
hbcb 2004-11-20
  • 打赏
  • 举报
回复
shell有困难或效率不高,不如用C写小段代码就可以完成,在C里很容易实现的

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧