Chinaunix

标题: 关于grep的问题 [打印本页]

作者: bzcll    时间: 2005-03-29 11:49
标题: 关于grep的问题
有一个文本,文件名为aaa,格式如下:
801|11223.29
8011|2223.56
805|123.48
.....
812|2231.01
887|23.10
888|8790.01

另有一个文本,文件名为km,格式如下:
801
805
...
887

现在我想将文件km作为一个变量,在文件aaa中进行搜索,将符合要求的行存在另一个文件中,因此作了一个循环:
for km in `cat aaa`
do
grep "$km" aaa >>bbb
done

但出来的结果是:总有某几行有重复现象,但在aaa文件中不存在重复的行,请大家帮忙看一下,问题出在哪里,谢谢!
作者: icesummit    时间: 2005-03-29 11:54
标题: 关于grep的问题
原帖由 "bzcll" 发表:

for km in `cat aaa`
do
grep "$km" aaa >>bbb
done


怎么两个文件都是aaa呢
作者: ZealeS    时间: 2005-03-29 12:14
标题: 关于grep的问题
楼主意思是对的,之不过没有使用全匹配而已。
试试
grep -w "$km"
作者: 一梦如是    时间: 2005-03-29 14:45
标题: 关于grep的问题
最好用egrep匹配得更准确些
作者: sway2004009    时间: 2005-03-29 20:41
标题: 关于grep的问题
应该改为:
for km in `cat km`
do
grep "$km" aaa >> bbb
done

一起努力,一起学习!
作者: bzcll    时间: 2005-03-30 11:33
标题: 关于grep的问题
还是不行呀,还是有重复的行, 我使用的是sco unix系统,对-w参数不支持.
作者: bzcll    时间: 2005-03-30 11:38
标题: 关于grep的问题
原帖由 "sway2004009" 发表:
应该改为:
for km in `cat km`
do
grep "$km" aaa >> bbb
done

一起努力,一起学习!


应该是这样的,我前面发的有一点错误,但按照你写的重新运用后,还是有重复的行,还是达不到予期的效果.我用的是sco unix5.05系统,对-w参数不支持.
作者: abist    时间: 2005-05-10 18:46
标题: 关于grep的问题
删除连续重复行(大量使用了pattern space 文件太大时要注意)

代码:
sed '$!N; /^\(.*\)\n$/!P; D'      
#使用 $!N 要当心内存溢出

举例
代码:
cat file
111111111111111111
222222222222222222
222222222222222222
333333333333333333
444444444444444444
444444444444444444
444444444444444444
444444444444444444
444444444444444444

sed '$!N; /^\(.*\)\n$/!P; D' filename
111111111111111111
222222222222222222
333333333333333333
444444444444444444
作者: zhu_st    时间: 2005-05-10 19:53
标题: 关于grep的问题
aaa.txt:
801|11223.29
8011|2223.56
805|123.48
.....
812|2231.01
887|23.10
888|8790.01

你使用:grep "801" aaa.txt 时,当然会有重复行...
作者: wayy2008    时间: 2005-05-10 20:10
提示: 作者被禁止或删除 内容自动屏蔽
作者: zhu_st    时间: 2005-05-10 20:14
标题: 关于grep的问题
就是啊,
for km in `cat km`
do
grep "$km|"  aaa >>bbb
done




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