【发布时间】:2016-12-07 06:09:37
【问题描述】:
如何将字符串分配给如下变量:
输入内容:
+++ USCDB 2016-07-29 20:19:53 PGW #036326 %%/*HWHandle=12547*/LST EPS:IMSI="515020211157018";%% RETCODE = 0 SUCCESS0001:Operation is successful
IMSI = 515020211157018
ISDN = 632000000016
EPS = NOTPROV
ANCHOR = FALSE
ICSIND = FALSE
Total count = 5
There is together 1 report
--- END
+++ USCDB 2016-07-29 20:19:53 PGW #036331 %%/*HWHandle=12547*/LST EPS:IMSI="515020211157020";%% RETCODE = 0
SUCCESS0001:Operation is successful
IMSI = 515020211157020
ISDN = 632000000018
EPS = PROV
AMBRMAXUL = 7104000
AMBRMAXDL = 15200000
RATFREQSELPRIID = 256
ANCHOR = FALSE
ICSIND = FALSE
MPS = FALSE
TAUTIMER = 0
MDT = NOTGIVEN
LTEAUTOPROV = FALSE
RELAY_NODE = FALSE
EPSODBPOS = NOBPOS
LTE_M2M_FLAG = FALSE
Total count = 15
There is together 1 report
虽然我目前使用 grep 和 awk 来获取上述值。
IMSI=$(echo $LINE | grep 'IMSI' | awk -F'=' '{print $2}')
ISDN=$(echo $LINE | grep 'ISDN' | awk -F'=' '{print $2}')
EPS=$(echo $LINE | grep 'EPS =' | awk -F'=' '{print $2}')
AMBRMAXUL=$(echo $LINE | grep 'AMBRMAXUL' | awk -F'=' '{print $2}')
AMBRMAXDL=$(echo $LINE | grep 'AMBRMAXDL' | awk -F'=' '{print $2}')
但是在打印时,所有的 IMSI 值都将存储在一个变量中
预期输出:
515020211157018 632000000016 NOTPROV
515020211157020 632000000018 PROV 7104000 15200000
【问题讨论】:
-
变量是否包含空格,例如
AMB RMAXUL是否允许? -
@shellter : 你可能破坏了预期输出的格式
-
hm...我所做的只是使用
{}工具。如果您认为它是错误的,请随时修改。祝大家好运。 -
不要将
grep传递给awk。echo $LINE | grep 'IMSI' | awk -F'=' '{print $2}'写得更好echo $LINE | awk -F= '/IMSI/{print $2}' -
您输入的第二份报告中的
END标记是否真的缺失?
标签: shell parsing unix awk grep