Chinaunix

标题: Shell高手帮我想想办法 [打印本页]

作者: neverban    时间: 2003-06-23 12:03
标题: Shell高手帮我想想办法
本人想用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

此程序存在逻辑错误,什么也不做
请高手帮我看看.
作者: anonimousboy    时间: 2003-06-23 12:22
标题: Shell高手帮我想想办法
原帖由 "neverban"] -eq "#"  发表:

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

此程序存在逻辑错误,什么也不做
请高手帮我看看.
   
你的方法好象很麻烦啊,如果是想对记录中按照名字排序的话,根本用不着那样做:
可以用SORT,按照第一个域进行排序就好了~~
sort -k 1 urfile > newfile
作者: rollingpig    时间: 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
作者: anonimousboy    时间: 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
   
哦,那你的名字文件里的名字是如何排序的啊,让我看看可否?
作者: rollingpig    时间: 2003-06-23 14:40
标题: Shell高手帮我想想办法
这就是所谓的特定顺序

就是由用户自己来排序

比如说

董事长
经理
员工
垃圾工
作者: neverban    时间: 2003-06-23 14:40
标题: Shell高手帮我想想办法
由于用来参考排序的是中文人名,并且没有规律所以只好这样了

我看过sort 的用法说明,sort 没有按字典排序的功能
作者: hp_unix    时间: 2003-06-23 15:18
标题: Shell高手帮我想想办法
touch newatr.txt
for i in `cat name.txt`
do
nawk '$0~ /'"$i"'/' atr.txt >>newatr.txt
done

这样就行了!
作者: neverban    时间: 2003-06-23 16:49
标题: Shell高手帮我想想办法
hp_unix:
你的方法要求名字是用空格来分隔的,而我的name.txt
是每个名字占一行
作者: rollingpig    时间: 2003-06-23 17:10
标题: Shell高手帮我想想办法
呵呵

我的代码由问题吗??




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2