求shell 高手。。。!!!

素年 2012-02-08 11:15:43

新手能看懂shell 求高手帮忙写一下。。

有一个目录,下面有很多文件。文件名格式固定。如:
D20120208.05_20120208.06_DAA
D20120208.06_20120208.07_DAA
D20120208.07_20120208.08_DAA

D20120208.05_20120208.06_BOD
D20120208.06_20120208.07_BOD
D20120208.07_20120208.08_BOD

文件里面有许多字段,每一种业务类型有不同的字段,比如说 DAA里面有name,age,sal。 BOD里面有name,age,sess。

现在传入一个文件名,和某些字段。比如说 D20120208.05_20120208.06_DAA,name,age。

就需要解析所有DAA类型的文件以及查询name,age字段,需要计算age字段。

解析每一个文件需要记录日志,该文件已经被解析过了。并且输出一个文件里面有name,age字段(文件名不变,存放

在另一目录)。

如果输入了 D20120208.05_20120208.06_DAA,name,age,07。

需要解析 07 点以前的文件,如果已经被解析过,就不需要解析了。输入参数的长度不会超过10个。

求高手挑战一下,帮帮小弟,刚刚学习shell。谢谢。
...全文
118 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
素年 2012-02-13
  • 打赏
  • 举报
回复
但是这个是 perl啊!!!!


我需要的是 shell。。 - -
素年 2012-02-13
  • 打赏
  • 举报
回复
谢谢!!!
jialejiahi 2012-02-11
  • 打赏
  • 举报
回复
根据楼主的描述,
假设数据文件D20120208.05_20120208.06_DAA如下:

name age sex wage
liu 25 male 3456
zhang 27 female 4567

D20120208.08_20120208.09_DAA 如下

name age sex wage
ma 26 male 3856
sun 26 female 4667

脚本如下:

#!/bin/sh

parse()
{
echo $file |tee -a parsed
awk -v cols="$args" '
BEGIN {
}
NR==1 {
for (i=1;i<=NF;i++) {
if (index(cols, $i) > 0)
field[i]=$i
}
}
{
for (i in field)
printf ("%s \t", $i)
printf("\n")
}' $file
}
args=$*
if echo $args | grep -q " *[0-9][0-9] *$"; then
file=${args%% *}
time=${args##* }
args=${args#* }
args=${args% *}
for file in $(ls); do
f2=$(echo $file|awk -F[._] '{print $2}')
f4=$(echo $file|awk -F[._] '{print $4}')

echo $f2 | grep -q "^[0-9][0-9]$" || continue
echo $f4 | grep -q "^[0-9][0-9]$" || continue
if [ $f2 -lt $time -a $f4 -lt $time ]; then
if ! grep -q "$file" parsed; then
parse |tee -a result
fi
fi
done
else
file=${args%% *}
args=${args#* }
if ! grep -q "$file" parsed; then
parse |tee -a result
fi
fi

执行效果如下:

# ./parse.sh D20120208.05_20120208.06_DAA name sex 10
D20120208.05_20120208.06_DAA
name sex
liu male
zhang female
D20120208.08_20120208.09_DAA
name sex
ma male
sun female
tianxiaolin 2012-02-10
  • 打赏
  • 举报
回复
说的都不清楚,让人怎么帮你?

弄一堆特殊字符,看着就没有心情了.
标题也不直接写问题,求shell高手?
justkk 2012-02-09
  • 打赏
  • 举报
回复
题意表述不明确,功能点没描述清楚
Linux-Torvalds 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 qq3138298 的回复:]
新手能看懂shell 求高手帮忙写一下。。

有一个目录,下面有很多文件。文件名格式固定。如:
D20120208.05_20120208.06_DAA
D20120208.06_20120208.07_DAA
D20120208.07_20120208.08_DAA

D20120208.05_20120208.06_BOD
D20120208.06_20120208.07_BO……
[/Quote]怎么说也许要拿几个示例文件上来吧?
推荐理由 它是Pearson、Amazon、Bames&Noble 计算机畅销书!   知名Linux专家Mark Sobell 编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一本卓越的日常参考手册。   一本值得每一位Linux管理人员、开发人员和高级用户拥有的指南!   本书特点:   1.它是Pearson、Amazon、Bames&Noble 计算机畅销书!   2.知名Linux专家Mark Sobell 编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一本卓越的日常参考手册。   3.一本值得每一位Linux管理人员、开发人员和高级用户拥有的指南!   4.本书并不针对特定的Linux版本或者某个发行版本,而是适用于所有近期发布的Linux版本;   5.最实用的Linux指南和参考手册,数百个高质量的实例覆盖了每种Linux发行版!   6.本书覆盖超过80个核心工具、shell编程、编辑器和编程工具,能使您成为真正的Linux高手,它是掌握强大的Linux命令行的捷径。   本书是目前所能找到的最实用、最全面的Linux指南和参考手册,也是唯一一本提供以下全部内容的书籍:   更好更实用的示例覆盖了实际工作中需要执行的任务;   基于作者对Linux的渊博知识,本书提供了更加深入的理解;   为从aspell到xargs等80多个工具提供了更加实用的讲解;   使用ssh和scp的安全通信实现技术,以及多处让系统更加安全的提示;   很好地介绍了Linux编程环境,包括make、gcc、gdb、CVS等;   关于使用bash和tcsh进行基本的和高级的shell编程的专家指南;   定制shell以及在命令行上交互使用shell的提示和技巧;   提供了vim和emacs的详细指南,目的是为了帮助读者提高编辑效率;   大量练习将有助于提高读者的动手能力并获得自信心;   介绍了如何使用Apt、yum和BitTorrent自动更新系统;   还介绍了gawk、sed、find、sort、bzip2和正则表达式等内容。 内容简介要想真正高效地使用Linux,就必须全面掌握shell和命令行。通常必须购买两本书才能达到精通的目的:一本关于Linux基本概念和技术的指南,再加上一个单独的参考手册。更糟糕的是,大多数Linux参考手册只是对man手册页的稍加整理。而现在有了一个好得多的解决方案。知名Linux专家Mark Sobell编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一个卓越的日常参考手册。   本书与具体版本无关,可以在任何Linux系统上使用。更重要的是,书中包含数百个高质量的示例,这些示例要比其他任何一本Linux手册中的示例要实用得多。本书全面介绍了Linux:为从文件系统到shell、从编辑器到工具以及从编程工具到正则表达式等方面提供了最清晰的讲解和最有用的知识。并且,当需要立即得到答案时,可以翻到本书的命令参考部分,这部分内容经过精心组织和标注,非常易于快速查找! 作者简介 Mark G.Sobell是Sobell Associates 公司的主席,该公司是一个专于UNLX/Linux 培训、技术支持和用户软件开发的咨询公司。Sobell是多本UNIX和Linux畅销书的作者,著有Prentice Hall PTR出版社出版的A Prac-tical Guide to Red Hat Linux,Second Edition一书,以及Addison-Wesley出版社出版的A Practical Guide to UNIX System,Hands-on UNIX和A Practical Guide to Solaris。Sobell具有超过25年使用UNIX和Linux的经验。
推荐理由 它是Pearson、Amazon、Bames&Noble 计算机畅销书!   知名Linux专家Mark Sobell 编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一本卓越的日常参考手册。   一本值得每一位Linux管理人员、开发人员和高级用户拥有的指南!   本书特点:   1.它是Pearson、Amazon、Bames&Noble 计算机畅销书!   2.知名Linux专家Mark Sobell 编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一本卓越的日常参考手册。   3.一本值得每一位Linux管理人员、开发人员和高级用户拥有的指南!   4.本书并不针对特定的Linux版本或者某个发行版本,而是适用于所有近期发布的Linux版本;   5.最实用的Linux指南和参考手册,数百个高质量的实例覆盖了每种Linux发行版!   6.本书覆盖超过80个核心工具、shell编程、编辑器和编程工具,能使您成为真正的Linux高手,它是掌握强大的Linux命令行的捷径。   本书是目前所能找到的最实用、最全面的Linux指南和参考手册,也是唯一一本提供以下全部内容的书籍:   更好更实用的示例覆盖了实际工作中需要执行的任务;   基于作者对Linux的渊博知识,本书提供了更加深入的理解;   为从aspell到xargs等80多个工具提供了更加实用的讲解;   使用ssh和scp的安全通信实现技术,以及多处让系统更加安全的提示;   很好地介绍了Linux编程环境,包括make、gcc、gdb、CVS等;   关于使用bash和tcsh进行基本的和高级的shell编程的专家指南;   定制shell以及在命令行上交互使用shell的提示和技巧;   提供了vim和emacs的详细指南,目的是为了帮助读者提高编辑效率;   大量练习将有助于提高读者的动手能力并获得自信心;   介绍了如何使用Apt、yum和BitTorrent自动更新系统;   还介绍了gawk、sed、find、sort、bzip2和正则表达式等内容。 内容简介要想真正高效地使用Linux,就必须全面掌握shell和命令行。通常必须购买两本书才能达到精通的目的:一本关于Linux基本概念和技术的指南,再加上一个单独的参考手册。更糟糕的是,大多数Linux参考手册只是对man手册页的稍加整理。而现在有了一个好得多的解决方案。知名Linux专家Mark Sobell编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一个卓越的日常参考手册。   本书与具体版本无关,可以在任何Linux系统上使用。更重要的是,书中包含数百个高质量的示例,这些示例要比其他任何一本Linux手册中的示例要实用得多。本书全面介绍了Linux:为从文件系统到shell、从编辑器到工具以及从编程工具到正则表达式等方面提供了最清晰的讲解和最有用的知识。并且,当需要立即得到答案时,可以翻到本书的命令参考部分,这部分内容经过精心组织和标注,非常易于快速查找! 作者简介 Mark G.Sobell是Sobell Associates 公司的主席,该公司是一个专于UNLX/Linux 培训、技术支持和用户软件开发的咨询公司。Sobell是多本UNIX和Linux畅销书的作者,著有Prentice Hall PTR出版社出版的A Prac-tical Guide to Red Hat Linux,Second Edition一书,以及Addison-Wesley出版社出版的A Practical Guide to UNIX System,Hands-on UNIX和A Practical Guide to Solaris。Sobell具有超过25年使用UNIX和Linux的经验。推荐理由 它是Pearson、Amazon、Bames&Noble 计算机畅销书!   知名Linux专家Mark Sobell 编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一本卓越的日常参考手册。   一本值得每一位Linux管理人员、开发人员和高级用户拥有的指南!   本书特点:   1.它是Pearson、Amazon、Bames&Noble 计算机畅销书!   2.知名Linux专家Mark Sobell 编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一本卓越的日常参考手册。   3.一本值得每一位Linux管理人员、开发人员和高级用户拥有的指南!   4.本书并不针对

23,217

社区成员

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

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