[問題] 字串擷取

看板LinuxDev作者 (~我愛夏天~)時間11年前 (2014/03/31 21:34), 編輯推噓1(1011)
留言12則, 5人參與, 最新討論串1/1
有一字串如下 (HOST=abc)(USER=v2.0class)(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.1)(PORT=12345) 我該怎麼才能擷取出來黃色的部分呢? 其中abc 有可能是__odbc__ 或 ABC-38EN 或 www.yahoo.com 等不固定或不規則的字串 這樣的話我該有什麼方法才做呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.75.167.142 ※ 文章網址: http://www.ptt.cc/bbs/LinuxDev/M.1396272840.A.968.html

03/31 21:57, , 1F
我會用python, 先依照括弧切,再依照等號切
03/31 21:57, 1F

03/31 22:03, , 2F
可是萬一只能用shell script的話呢?
03/31 22:03, 2F

03/31 22:24, , 3F
用awk, 字串太長了, 假設他放在檔案tmp裡,用下列指令
03/31 22:24, 3F

03/31 22:24, , 4F
cat tmp |awk -F'[()=]' '{print $3 " " $5}'
03/31 22:24, 4F

03/31 22:26, , 5F
打錯了, 改成 cat tmp |awk -F'[()=]' '{print $3 " " $6}'
03/31 22:26, 5F

03/31 22:51, , 6F
真的要用bash script的話可以用IFS
03/31 22:51, 6F

03/31 23:33, , 7F
謝謝各位的回覆~另外,這用正規表示可以處理嗎?
03/31 23:33, 7F

03/31 23:35, , 8F
-F'[()=]' F後面接的該怎麼解釋呢?
03/31 23:35, 8F

04/01 18:16, , 9F
把'(' 或 ')' 或 '=' 當seperator
04/01 18:16, 9F

04/01 18:17, , 10F
04/01 18:17, 10F

04/01 21:40, , 11F
sed 's/.*HOST=\([^)]*\)).*USER=\([^)]*\)).*/\1 \2/'
04/01 21:40, 11F

04/03 12:20, , 12F
perl re
04/03 12:20, 12F
文章代碼(AID): #1JEMx8be (LinuxDev)