Hi
Input text is
[main] some message [value1] some message [value2] some message [value3]
Expected output is
main value1 value2 value3
Any idea how to above values in square brackets using shell scripting?
many thanks.
Hi
Input text is
[main] some message [value1] some message [value2] some message [value3]
Expected output is
main value1 value2 value3
Any idea how to above values in square brackets using shell scripting?
many thanks.
$ echo "[main] some message [value1] some message [value2] some message [value3]" | sed 's/^\[//;s/\][^\[]*\[/ /g;s/\]$//'
main value1 value2 value3
$
thanks Perderabo.
Any idea how to make more generic? I meant that input messages sometimes only have 1 items or more than 5 items.... the objective it to extract all values in square bracket in a given string.
example:
"some message [value1] some mesage [value2] [value3] some message[value4] some message [value5] some message"
output is
value1 value2 value3 value4 value5
many thanks
Here is one way of extracting the required strings using ksh93
str="some message [value1] some mesage [value2] [value3] some message[value4] some message [value5] some message"
echo ${str} | read -A words
while (( i < ${#words[@]} )); do
if [[ ${words} =~ \[.*\] ]]; then
str=${words/*\[/} # strip left
output+="${str/\]*/} " # strip right & append
fi
(( i++ ))
done
echo "RESULT: $output"