ChinaUnix.net
 >> ChinaUnix.net > Shell

awk 文本处理请高手帮忙

作者:ljp0683     发表时间:2002/04/08 04:10pm

我有2个文本文件
我从第一个文本文件中取得一行文本中变量中的字符串,再附值另一个变量----这一步我已实现

现我想到第二文本中搜索上一步附值的变量,并从搜索到的行或行中的某一变量中取得字符
串变量再返回第一文本中执行命令(余下命 令中要用到第二文本中取得的字符串变量)。

请高手出手,不知该如何实现???????


此文章相关评论:
该文章有15个相关评论如下:(点这儿可以发表评论)
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
我想,要尊重别人的时间。
要考虑,你为大家贡献了什么,你索取了什么。
 
 

Copyright © ChinaUnix.net  *  转载请注明出处及作者