Shell脚本匹配字符串并在aix机器上打印下一个字符串

时间:2017-06-29 15:35:44

标签: shell unix aix

我有一个以下行作为输入。

Parsing events:hostname='tom';Ipaddress='10.10.10.1';situation_name='sgd_abc_app_a';type='General';

像这样,一行中有许多字段用分隔符分隔为分号。 (但从解析事件开始:)

我想在匹配situation_name时仅提取sgd_abc_app_a

由于 Kulli的

3 个答案:

答案 0 :(得分:0)

awk 解决方案:

SELECT *
FROM .dbo.Lookup_Category C
LEFT JOIN dbo.Client CL ON C.ID = CL.Category
                        AND (CL.ID = 423 OR CL.Category IS NULL)

sed

s="Parsing events: hostname='tom';Ipaddress='10.10.10.1';situation_name='sgd_abc_app_a';type='General';"
awk -F'[=;]' '{ gsub("\047","",$6); print $6 }' <<< $s

输出:

sed -n "s/^Parsing events:.*situation_name='\([^']*\).*/\1/p" <<< $s

答案 1 :(得分:0)

对于您的请求,无论situation_name

的位置如何,它都会有效
$ awk '/situation_name/{match($0,/situation_name=[^;]+/); print substr($0,RSTART+16,RLENGTH-17)}' file
sgd_abc_app_a

答案 2 :(得分:0)

尝试

sed -n 's/^.*situation_name=//p' input_file| awk -F "'" '{print $2}'