Chinaunix

标题: 保留这行,该怎么做呢?? [打印本页]

作者: ebfm    时间: 2005-01-11 13:57
标题: 保留这行,该怎么做呢??
如果我的两个文件的格式不同如下.
a文件格式
10001,49,29
10002,454,sfd
10003,88a,34
10004,aaab,111

b文件格式
10002
10006
10008

我想实现这样功能:如果a文件中某行第一个字段的值在b文件有,则保留这行
该怎么做呢??

作者: waker    时间: 2005-01-11 14:03
标题: 保留这行,该怎么做呢??
grep -f b a
作者: ebfm    时间: 2005-01-11 14:24
标题: 保留这行,该怎么做呢??
[quote]原帖由 "waker"]grep -f b a[/quote 发表:


我用了这个命令后,没反应。
作者: 寂寞烈火    时间: 2005-01-11 14:25
标题: 保留这行,该怎么做呢??
  1. for i in $(<b);do grep $i a;done
复制代码

作者: Minsic    时间: 2005-01-11 14:38
标题: 保留这行,该怎么做呢??
原帖由 "ebfm" 发表:


我用了这个命令后,没反应。

偶用的是solaris7,用/usr/xpg4/bin/grep就行了,man grep找下支持-f选项的grep命令吧  
作者: ebfm    时间: 2005-01-11 14:46
标题: 保留这行,该怎么做呢??
其实我不想用for循环,觉得效率太低了。我曾经看见用awk的。可它只是将相同的留下了。
awk -F"," 'NR==FNR{a[$0]}NR!=FNR&&!($2 in a){print $0}'  b a
作者: guangzongy    时间: 2005-01-11 15:11
标题: 保留这行,该怎么做呢??
原帖由 "ebfm" 发表:


我用了这个命令后,没反应。

估计你的b文件里面除了数字还有空格,所以会没有结果出来。
你可以把b文件的空格去掉再用
  1. grep -f b a
复制代码


再给出一种方法
  1. var=`cat b`;grep -E "`echo ${var}|tr ' ' '|'`" a
复制代码

作者: 寂寞烈火    时间: 2005-01-11 15:21
标题: 保留这行,该怎么做呢??
都是逗号惹的祸
/home/lee#cat b|sed 's/.*/&,/g;s/ //g'>c
/home/lee#join -t',' a c|sed 's/,$//g'>newfile
/home/lee#cat newfile
10002,454,sfd
作者: ebfm    时间: 2005-01-11 15:39
标题: 保留这行,该怎么做呢??
原帖由 "寂寞烈火" 发表:
都是逗号惹的祸
/home/lee#cat b|sed 's/.*/&,/g;s/ //g'>c
/home/lee#join -t',' a c|sed 's/,$//g'>newfile
/home/lee#cat newfile
10002,454,sfd


我的newfile大小怎么是0
作者: rollingpig    时间: 2005-01-11 16:33
标题: 保留这行,该怎么做呢??
[quote]原帖由 "waker"]grep -f b a[/quote 发表:


fgrep -f  b a
作者: ebfm    时间: 2005-01-11 17:10
标题: 保留这行,该怎么做呢??
原帖由 "rollingpig" 发表:


fgrep -f  b a


结果怎么文件大小是0。。。。
作者: 寂寞烈火    时间: 2005-01-11 17:20
标题: 保留这行,该怎么做呢??
努力!!!
作者: rollingpig    时间: 2005-01-11 17:35
标题: 保留这行,该怎么做呢??
不可能吧
cat a | fgrep -f b > tmp_file
作者: r2007    时间: 2005-01-11 17:41
标题: 保留这行,该怎么做呢??
参考一下这篇
http://bbs.chinaunix.net/forum/viewtopic.php?t=477622




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