|
uubride |
发表于: 2002/04/08 07:06pm
|
| 能不能给两个文本,这种东西每个实现方式多是不一样的 |
| |
|
ljp0683 |
发表于: 2002/04/09 08:36am
|
tmp1: qwe rtgbh52800op poil 7851fghjj874 tmp2 poil 999rrr qwe uytppp 我现在要用tmp2中的$2字段中的几个字符串替换tmp1中的$2字段中的几个字符串
|
| |
|
feeling |
发表于: 2002/04/09 09:10am
|
| Like database, use 'join' ! |
| |
|
ljp0683 |
发表于: 2002/04/09 02:10pm
|
| 当然不是这么简单 |
| |
|
benbrother |
发表于: 2002/04/09 03:31pm
|
我也想问问?AWK中能同时对两个文件操作吗?或者AWK可以嵌套吗?如果都不行,那你可以试试用SHELL编个小程序。 for var1 in `cat tmp1' done for var2 in 'cat tmp2' done if var1 ? var2 then command var1 var2 do do 当然我也知道的不多,你可以考虑类似的想法! |
| |
|
uubride |
发表于: 2002/04/09 10:34pm
|
[这个贴子最后由uubride在 2002/04/10 07:03pm 编辑]
awk ' BEGIN { i=1 while((getline < "tmp2")>0) { F[[i]]=$1; S[[i]]=$2; i++ } line=i } { for(j=1;j<=line;j++) { if($1==F[[j]]) printf "%s,%s\n",$1,S[[j]] } } ' tmp1 先把tmp2文件的$1,$2读入数组,然后再操作tmp2------------- Sorry: 昨天写完之后没有仔细看 |
| |
|
valentine |
发表于: 2002/04/10 12:53pm
|
楼上的是否应是 { F[i]=$1; S[i]=$2; i++ }
|
| |
|
michaelds |
发表于: 2002/04/10 06:30pm
|
如果要求就是像tmp1,tmp2那样,为什么不这样:(要是想把tmp1中不匹配的也打出来稍微改动即可) while read line;do key=`echo $line|cut -d" " -f1` grep $key tmp2 done < tmp1 |
| |
|
valentine |
发表于: 2002/04/11 08:31am
|
| 如果两个排序后第一列一样的话,用paste也很简单. |
| |
|
ljp0683 |
发表于: 2002/04/11 01:56pm
|
| 第一列不一样的 |
| |
|
ljp0683 |
发表于: 2002/04/11 02:09pm
|
我有如下二个文本temp1 qwaszbbbpol 2001020300000666.25000009875213 rfvcgaaaujn 3021545669000008.99000000000512 ... ... temp2 985hjklfsaaa95fh 7845.56 fv5684521bbbtgd6 44.14 ... ... 现要根据第一列中字段中的aaa或bbb,... 为两个文本的对应关系,搜索到以后用temp2中 的$2值替换temp1中$2中的有小数点的其中几个字符或数值DO YOU KNOWN ???? |
| |
|
valentine |
发表于: 2002/04/11 02:25pm
|
[这个贴子最后由valentine在 2002/04/11 02:26pm 编辑]
我想你的问题只不过又增加了复杂度。 你可以在awk里用substr。不喜欢做类似的家庭作业。 是Do you know吧。 |
| |
|
ljp0683 |
发表于: 2002/04/13 08:58am
|
| 这是我的实际问题,我要统计数据! |
| |
|
michaelds |
发表于: 2002/04/15 01:56pm
|
我靠,受不了了。(对不起,我很少这么冲动),发帖子也是要讲学问的,否则只有让人生厌,哪里能解决问题。我先泛泛说说发帖的问题: 有内容(不要只靠个标题就over了吧) 题目既引人又能实事求是的说明问题("help!求救!"来这的,有谁不是要说help的?将来看到这样的题目谁能知道是干什么的?) 经过自身思考(不要东抄西抄,或是有一点问题,毫不探究,直接问将上来,连自己身边的参考书或是man帮助都不查一下;别人的回答,即使没有100%解决问题,关键地方解决了,其余凭自己完全可以搞定,也不死心的追问不停,直到获得100%的代码,paste完事) 表达清楚(是什么就是什么,颠三倒四或是含糊其辞、连连省略地说一大通,唐僧也要自愧不如的) 描述详尽(发了帖自己至少要推敲一番,假定别人完全没有你的问题背景,能不能领会你的意思?相关的细节是否说清楚了呢?不要让别人反复追问你细节都得7,8帖吧)这位ljp0683仁兄,也许你的问题涉及保密性,你可以不按问题的原样来问大家,可是就得保证你的描述方式是清楚地啊。大家好意的猜测你的意思,提出自己的解决方法,你再挤牙膏地告诉,不是这样不是那样,最终举的例子也没把问题说清楚,还挺有火气。斑竹的目前的回应心情也就完全可以理解了。 我来问问你的描述是什么意思?第一列的aaa,bbb是怎样确定的?是几个连续的字符?(若是,那是连续几个呢)还是从固定的第几个字符算起到第几个字符结束?找不到对应关系的行怎么处理?还有到底是temp2的$2替换temp1的$2的哪个?是$2全部,还是小数点部分? 大家对你的几个回答,一点启发都没有?不能根据大家的思路完成其余的工作? 我们对你的问题背景一无所知,对于我们来说没有默认值的,所以才需要你描述清楚啊!要是多几个这样的帖子,大家的耐心都会磨没的,日子长了,这个论坛也就自己消亡了。 |
| |
|
valentine |
发表于: 2002/04/15 05:16pm
|
我想,要尊重别人的时间。 要考虑,你为大家贡献了什么,你索取了什么。 |
| |
|
|