作者blackspace98 (~我爱夏天~)
看板LinuxDev
标题[问题] 字串撷取
时间Mon Mar 31 21:33:57 2014
有一字串如下
(
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://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1396272840.A.968.html
1F:→ mshockwave:我会用python, 先依照括弧切,再依照等号切 03/31 21:57
2F:→ blackspace98:可是万一只能用shell script的话呢? 03/31 22:03
3F:→ Viller:用awk, 字串太长了, 假设他放在档案tmp里,用下列指令 03/31 22:24
4F:→ Viller:cat tmp |awk -F'[()=]' '{print $3 " " $5}' 03/31 22:24
5F:→ Viller:打错了, 改成 cat tmp |awk -F'[()=]' '{print $3 " " $6}' 03/31 22:26
6F:→ mshockwave:真的要用bash script的话可以用IFS 03/31 22:51
7F:→ blackspace98:谢谢各位的回覆~另外,这用正规表示可以处理吗? 03/31 23:33
8F:→ blackspace98:-F'[()=]' F後面接的该怎麽解释呢? 03/31 23:35
9F:→ Viller:把'(' 或 ')' 或 '=' 当seperator 04/01 18:16
11F:推 yuskeb:sed 's/.*HOST=\([^)]*\)).*USER=\([^)]*\)).*/\1 \2/' 04/01 21:40
12F:→ drm343:perl re 04/03 12:20