歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> awk文本處理

awk文本處理

日期:2017/2/27 9:22:04   编辑:更多Linux
  我有2個文本文件 我從第一個文本文件中取得一行文本中變量中的字符串,再附值另一個變量----這一步我已實現 現我想到第二文本中搜索上一步附值的變量,並從搜索到的行或行中的某一變量中取得字符 串變量再返回第一文本中執行命令(余下命 令中要用到第二文本中取得的字符串變量)。 請高手出手,不知該如何實現??????? 能不能給兩個文本,這種東西每個實現方式多是不一樣的 tmp1: qwe rtgbh52800op poil 7851fghjj874 tmp2 poil 999rrr qwe uytppp 我現在要用tmp2中的$2字段中的幾個字符串替換tmp1中的$2字段中的幾個字符串 Like database, use 'join' ! 當然不是這麼簡單 我也想問問?AWK中能同時對兩個文件操作嗎?或者AWK可以嵌套嗎?如果都不行,那你可以試試用SHELL編個小程序。 for var1 in `cat tmp1' done for var2 in 'cat tmp2' done if var1 ? var2 then command var1 var2 do do 當然我也知道的不多,你可以考慮類似的想法! 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 ",$1,S[[j]] } } ' tmp1 先把tmp2文件的$1,$2讀入數組,然後再操作tmp2 ------------- Sorry: 昨天寫完之後沒有仔細看 樓上的是否應是 { F[i]=$1; S[i]=$2; i++ } 如果要求就是像tmp1,tmp2那樣,為什麼不這樣:(要是想把tmp1中不匹配的也打出來稍微改動即可) while read line;do key=`echo $linecut -d" " -f1` grep $key tmp2 done < tmp1 如果兩個排序後第一列一樣的話,用paste也很簡單. 第一列不一樣的 我有如下二個文本temp1 qwaszbbbpol 2001020300000666.25000009875213 rfvcgaaaujn 3021545669000008.99000000000512 ... ... temp2 985hjklfsaaa95fh 7845.56 fv5684521bbBTgd6 44.14 ... ... 現要根據第一列中字段中的aaa或bbb,... 為兩個文本的對應關系,搜索到以後用temp2中 的$2值替換temp1中$2中的有小數點的其中幾個字符或數值 DO YOU KNOWN ???? 我想你的問題只不過又增加了復雜度。 你可以在awk裡用substr。 不喜歡做類似的家庭作業。 是Do you know吧。 這是我的實際問題,我要統計數據! 我靠,受不了了。(對不起,我很少這麼沖動),發帖子也是要講學問的,否則只有讓人生厭,哪裡能解決問題。我先泛泛說說發帖的問題: 有內容(不要只靠個標題就over了吧) 題目既引人又能實事求是的說明問題("help!求救!"來這的,有誰不是要說help的?將來看到這樣的題目誰能知道是干什麼的?) 經過自身思考(不要東抄西抄,或是有一點問題,毫不探究,直接問將上來,連自己身邊的參考書或是man幫助都不查一下;別人的回答,即使沒有100%解決問題,關鍵地方解決了,其余憑自己完全可以搞定,也不死心的追問不停,直到獲得100%的代碼,paste完事) 表達清楚(是什麼就是什麼,顛三倒四或是含糊其辭、連連省略地說一大通,唐僧也要自愧不如的) 描述詳盡(發了帖自己至少要推敲一番,假定別人完全沒有你的問題背景,能不能領會你的意思?相關的細節是否說清楚了呢?不要讓別人反復追問你細節都得7,8帖吧) 這位ljp0683仁兄,也許你的問題涉及保密性,你可以不按問題的原樣來問大家,可是就得保證你的描述方式是清楚地啊。大家好意的猜測你的意思,提出自己的解決方法,你再擠牙膏地告訴,不是這樣不是那樣,最終舉的例子也沒把問題說清楚,還挺有火氣。斑竹的目前的回應心情也就完全可以理解了。


我來問問你的描述是什麼意思?第一列的aaa,bbb是怎樣確定的?是幾個連續的字符?(若是,那是連續幾個呢)還是從固定的第幾個字符算起到第幾個字符結束?找不到對應關系的行怎麼處理?還有到底是temp2的$2替換temp1的$2的哪個?是$2全部,還是小數點部分? 大家對你的幾個回答,一點啟發都沒有?不能根據大家的思路完成其余的工作? 我們對你的問題背景一無所知,對於我們來說沒有默認值的,所以才需要你描述清楚啊!要是多幾個這樣的帖子,大家的耐心都會磨沒的,日子長了,這個論壇也就自己消亡了。



Copyright © Linux教程網 All Rights Reserved