【发布时间】:2018-10-06 13:43:21
【问题描述】:
我有一个服务(http://localhost:8080/tester),当我调用它时,它会给我以下响应。为了清楚起见,我已经缩短了格式。
modified=false
ver=10
PATH=/doc/path/abc
Servers:3
pri:{0=1, 1=2, 2=3, 3=4, 4=5, 5=6, 6=7, 7=8, 8=1, 9=2, 10=3, 11=4, 12=5, 13=6, 14=7, 15=8, 17=2, 16=1, 19=4, 18=3, 21=6, 20=5, 23=8, 22=7, 25=2, 24=1, 27=4, 26=3, 29=6, 28=5, 31=8, 30=7, 34=3, 35=4, 32=1, 33=2, 38=7, 39=8, 36=5, 37=6, 42=3, 43=4, 40=1}
sec:{0=2, 1=3, 2=4, 3=5, 4=6, 5=7, 6=8, 7=1, 8=3, 9=4, 10=5}
PATH=/doc/path/pqr
Servers:3
pri:{0=1, 1=2, 2=3, 3=4, 4=5, 5=6, 6=7, 7=8, 8=1, 9=2, 10=3, 11=4, 12=5, 13=6, 14=7, 15=8, 17=2, 16=1, 19=4, 18=3, 21=6, 20=5, 23=8, 22=7, 25=2, 24=1, 27=4, 26=3, 29=6, 28=5, 31=8, 30=7, 34=3, 35=4, 32=1, 33=2, 38=7, 39=8, 36=5, 37=6, 42=3, 43=4, 40=1}
sec:{0=2, 1=3, 2=4, 3=5, 4=6, 5=7, 6=8, 7=1, 8=3, 9=4, 10=5}
我需要阅读此响应并提取 pri 和 sec 的值,但仅限于 PATH=/doc/path/abc。现在pri和sec的格式是这样的:
{value1=key1, value2=key2, value3=key2, value4=key1}
每个唯一键在pri 和sec 列表中都可以有多个值。现在我需要同时读取pri 和sec 列表,并为pri 列表创建两个文件p.txt 和s.txt 为sec 列表,方法是基于唯一键对值进行分组,如下所示:
p.txt 这里的键和值来自pri 列表。
{key1=[value1, value2, value3, value4, value5, value6, value7, value8], key2=[value9, value10, value11, value12, value13, value14]}
s.txt 这里的键和值来自sec 列表。
{key1=[value1, value2, value3, value4, value5, value6, value7, value8], key2=[value9, value10, value11, value12, value13, value14]}
我不知道如何仅提取 pri 和 sec 的值以获取 PATH=/doc/path/abc 并通过对每个唯一键的值进行分组来制作相应的文件 p.txt 和 s.txt,就像上述格式一样。
DATA=$(wget -O - -q -t 1 http://localhost:8080/tester);
echo $DATA
# extract pri and sec here and then group values basis on unique keys
# and generate files accordingly.
while IFS= read -r $DATA
do
echo "$line"
done
【问题讨论】:
-
哎呀。选择 Perl 还是 Python?
-
是的 perl 或 python 也是一个选项。肯定会很难解析这些字符串并通过 linux 将其格式化。