[問題] 這樣的資料要怎麼樣用awk處理

看板Linux作者 (.........)時間10年前 (2015/04/13 19:40), 10年前編輯推噓0(0011)
留言11則, 4人參與, 最新討論串1/1
資料格式: Dog:12345 Cat:67890 Fish:13579 Dog:abcde Cat:fghijk Fish:lmnop ...... ...... 我需要將資料重組成 (12345,67890,13579) (abcde,fghijk,lmnop) 我的想法是將每個區塊資料 match關鍵字(dog/cat/fish)並以:為分隔符號,取欄位2存入變數1 其他以此類推,最後再用print重組字串 但怎麼測試都無法成功,請問這樣的方向正確嗎? 還是有其他方法? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.130.32 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1428925250.A.ABB.html ※ 編輯: xyzman (36.228.130.32), 04/13/2015 19:41:45

04/13 21:38, , 1F
取欄位2存入變數1是蝦米@@?
04/13 21:38, 1F

04/13 21:55, , 2F
差不多是這樣,如果資料出現順序一定是dog,cat,fish的話
04/13 21:55, 2F

04/13 21:55, , 3F
awk -F : '{n[$1]=$2}/^Fish/{print "("n["Dog"]","
04/13 21:55, 3F

04/13 21:55, , 4F
n["Cat"]","n["Fish"]")"}' xxx.txt
04/13 21:55, 4F

04/13 21:57, , 5F
如果是dog/cat/fish夾雜的話就多加一些檢查
04/13 21:57, 5F

04/13 22:18, , 6F
太強了!真的是我要的格式,看了許久完全看不懂為什麼!!
04/13 22:18, 6F

04/13 22:33, , 7F
awk的陣列是關聯式陣列,可以用字串當index
04/13 22:33, 7F

04/13 22:35, , 8F
用:當分隔符號,n陣列索引$1的值設為字串$2
04/13 22:35, 8F

04/13 22:36, , 9F
如果資料出現順序固定為狗貓魚的話,遇到魚就把值印出
04/13 22:36, 9F

04/13 22:54, , 10F
非常感謝你的幫忙跟講解,這樣就清楚這個用法了!
04/13 22:54, 10F

04/15 11:00, , 11F
我遇到這個大概會用python 處理=w=
04/15 11:00, 11F
文章代碼(AID): #1LAwj2gx (Linux)
文章代碼(AID): #1LAwj2gx (Linux)