1.2 KiB
BREAKDOWN
On rends le .txt unix-friendly
sed -i 's/\r//' /data/xmltvids.txt
On fait un big XPATH avec et on truncate le dernier "or"
awk '{printf "@id='''%s''' or ", $0}' | sed 's/ or $//' awk '{printf "@channel='''%s''' or ", $0}' | sed 's/ or $//'
On filter ce qu'on veut
xargs -0 -I{} xmlstarlet sel -t -c "//channel[{}]" CANADA.xml xargs -0 -I{} xmlstarlet sel -t -c "//programme[{}]" /data/CANADA.xml
FINAL CODE
echo '' > filtered_CANADA.xml awk '{printf "@id='''%s''' or ", $0}' /data/xmltvids.txt | sed 's/ or $//' | xargs -0 -I{} xmlstarlet sel -t -c "//channel[{}]" /data/CANADA.xml >> filtered_CANADA.xml awk '{printf "@channel='''%s''' or ", $0}' /data/xmltvids.txt | sed 's/ or $//' | xargs -0 -I{} xmlstarlet sel -t -c "//programme[{}]" /data/CANADA.xml >> filtered_CANADA.xml echo '' >> filtered_CANADA.xml
OPTIONAL PRETTY VERSION
xmlstarlet fo filtered_CANADA.xml > pretty_filtered_CANADA.xml
COUNT CHECK
CANADA.xml --> 739 channels, 129 538 programmes filtered_CANADA.xml --> 173 channels, 39067 programmes
USA.xml --> 11 668 channels, 975 691 programmes filtered_USA.xml --> ???