Re: scripting question: to parse data with varname=value pattern the easiest way?
>> On Mon, 01 Nov 2010 15:49:01 +0800,
>> Zhang Weiwu <zhangweiwu@realss.com> said:
Z> A program output is like this:
Z> result_01: a="23" b="288" c="A_string" ac="34"
Z> result_02: a="23" b="28" c="A_string_too" dc="3"
Z> ....
Z> I am writing a script to output values of b if b is in the result set.
If your data is trustworthy and follows shell assignment rules like the
example above, you can abuse sh/ksh/bash:
#!/bin/bash
sample='result_01: a="23" b="288" c="A_string" ac="34"
result_02: a="23" c="A_string_too" dc="3"
result_03: a="23" b="28" c="A_string_too" dc="3"'
echo "$sample" | while read str
do
unset b # or whatever you're looking for
set $str # will fail horribly if $str is empty
result=$1
shift
eval "$@"
test "$b" && echo "$result $b"
done
exit 0
On the other hand, if someone sneaks something like
result_04: dc="3" rm /something/valuable
into your program output, you'll get a nasty surprise.
--
Karl Vogel I don't speak for the USAF or my company
Most users (myself included) spend most of their time in front of a computer
in a kind of fuzzy autopilot mode, and anything that creates ripples on that
placid lake of unawareness is going to be noticed as a disproportionately
significant problem. --David Harris, creator of Pegasus Mail
Reply to: