Last active
May 19, 2021 19:45
-
-
Save agail/c88785133f79db1dadba6c9f194522ff to your computer and use it in GitHub Desktop.
Simple xml parser
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# version: 0.02 | |
# description: When you are limited to work w/o xpath. | |
# | |
# List regions: | |
# xmlparser [file] lsreg | |
# | |
# Get regions: | |
# xmlparser [file] getreg region | |
# | |
# Create sample.xml: | |
# xmlparser makesample | |
# | |
lsreg () { | |
echo cat "//Region/@Name" | |
} | |
getreg () { | |
echo cat "//Region[@Name=\"$1\"]/IpRange/@Subnet" | |
} | |
parse () { | |
$2 $3 | xmllint --shell $1 | sed -n 's/[^\"]*\"\([^\"]*\)\"[^\"]*/\1/gp' | sort -V | |
} | |
makesample () { | |
cat << EOF > sample.xml | |
<?xml version="1.0" encoding="utf-8"?> | |
<AzurePublicIpAddresses xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | |
<Region Name="australiac2"> | |
<IpRange Subnet="13.104.158.224/27" /> | |
<IpRange Subnet="20.36.64.0/19" /> | |
</Region> | |
<Region Name="germanywc"> | |
<IpRange Subnet="13.104.144.224/27" /> | |
<IpRange Subnet="13.104.145.128/27" /> | |
</Region> | |
<Region Name="japaneast"> | |
<IpRange Subnet="13.71.128.0/19" /> | |
<IpRange Subnet="13.73.0.0/19" /> | |
</Region> | |
<Region Name="japanwest"> | |
<IpRange Subnet="13.73.232.0/21" /> | |
<IpRange Subnet="20.39.176.0/21" /> | |
</Region> | |
<Region Name="usnorth"> | |
<IpRange Subnet="13.105.26.0/24" /> | |
<IpRange Subnet="13.105.37.64/26" /> | |
</Region> | |
<Region Name="europenorth"> | |
<IpRange Subnet="13.69.128.0/17" /> | |
<IpRange Subnet="13.70.192.0/18" /> | |
</Region> | |
<Region Name="southafrican"> | |
<IpRange Subnet="13.104.158.128/27" /> | |
<IpRange Subnet="13.104.158.160/28" /> | |
</Region> | |
<Region Name="ussouth"> | |
<IpRange Subnet="13.65.0.0/16" /> | |
<IpRange Subnet="13.66.0.0/17" /> | |
</Region> | |
<Region Name="uswestcentral"> | |
<IpRange Subnet="13.71.192.0/18" /> | |
<IpRange Subnet="13.77.192.0/19" /> | |
</Region> | |
</AzurePublicIpAddresses> | |
EOF | |
} | |
if [ ! $1 ]; then sed -ne '/^#$/,/^$/p' $0 | |
elif [ "$1" == "makesample" ]; then makesample | |
else parse $1 $2 $3 | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment