免费注册 查看新帖 |

Chinaunix

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

Shell高手帮我想想办法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-23 12:03 |只看该作者 |倒序浏览
本人想用Shell Script实现一个这样的功能:
atr.txt是数据库导出文本,其中一个域是姓名.
name.txt是已排好序的姓名文件,每行一个.
程序依次从name.txt中读出姓名然后从
atr.txt中选出这个姓名的记录输出到一个新
文件中newatr.txt
这样就可以实现按提拱的文本顺序对记录文件
排序的功能

#!/bin/sh
touch newatr.txt
cat name.txt|
while true
do
read name
if [ "$name" -eq "#" ]
then break
fi
grep $name atr.txt >> newatr.txt
done

此程序存在逻辑错误,什么也不做
请高手帮我看看.

论坛徽章:
0
2 [报告]
发表于 2003-06-23 12:22 |只看该作者

Shell高手帮我想想办法

原帖由 "neverban"] -eq "#"  发表:

then break
fi
grep $name atr.txt >> newatr.txt
done

此程序存在逻辑错误,什么也不做
请高手帮我看看.
   
你的方法好象很麻烦啊,如果是想对记录中按照名字排序的话,根本用不着那样做:
可以用SORT,按照第一个域进行排序就好了~~
sort -k 1 urfile > newfile

论坛徽章:
0
3 [报告]
发表于 2003-06-23 12:58 |只看该作者

Shell高手帮我想想办法

sort无法做到按特定顺序排序

#!/bin/sh
touch newatr.txt
cat name.txt|
while read name
do
grep $name atr.txt >> newatr.txt
done

论坛徽章:
0
4 [报告]
发表于 2003-06-23 13:42 |只看该作者

Shell高手帮我想想办法

原帖由 "rollingpig" 发表:
判?

#!/bin/sh
touch newatr.txt
cat name.txt|
while read name
do
grep $name atr.txt >> newatr.txt
done
   
哦,那你的名字文件里的名字是如何排序的啊,让我看看可否?

论坛徽章:
0
5 [报告]
发表于 2003-06-23 14:40 |只看该作者

Shell高手帮我想想办法

这就是所谓的特定顺序

就是由用户自己来排序

比如说

董事长
经理
员工
垃圾工

论坛徽章:
0
6 [报告]
发表于 2003-06-23 14:40 |只看该作者

Shell高手帮我想想办法

由于用来参考排序的是中文人名,并且没有规律所以只好这样了

我看过sort 的用法说明,sort 没有按字典排序的功能

论坛徽章:
0
7 [报告]
发表于 2003-06-23 15:18 |只看该作者

Shell高手帮我想想办法

touch newatr.txt
for i in `cat name.txt`
do
nawk '$0~ /'"$i"'/' atr.txt >>newatr.txt
done

这样就行了!

论坛徽章:
0
8 [报告]
发表于 2003-06-23 16:49 |只看该作者

Shell高手帮我想想办法

hp_unix:
你的方法要求名字是用空格来分隔的,而我的name.txt
是每个名字占一行

论坛徽章:
0
9 [报告]
发表于 2003-06-23 17:10 |只看该作者

Shell高手帮我想想办法

呵呵

我的代码由问题吗??
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP