Sponsored Content
Full Discussion: Sort tags in an xml file
Top Forums Shell Programming and Scripting Sort tags in an xml file Post 302937282 by drl on Wednesday 4th of March 2015 04:44:51 PM
Old 03-04-2015
Hi.

The utility msort allows multiple field delimiters:
Code:
#!/usr/bin/env bash

# @(#) s1	Demonstrate multiple field delimiters, msort.

# Utility functions: print-as-echo, print-line-with-visual-space, debug.
# export PATH="/usr/local/bin:/usr/bin:/bin"
LC_ALL=C ; LANG=C ; export LC_ALL LANG
pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && . $C msort

FILE=${1-data1}

pl " Input data file $FILE:"
cat $FILE

pl " Results:"
msort -l -q -j -un -d"<>" -n2 -c "lexicographic" $FILE

exit 0

producing:
Code:
$ ./s1

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 2.6.26-2-amd64, x86_64
Distribution        : Debian 5.0.8 (lenny, workstation) 
bash GNU bash 3.2.39
msort 8.44

-----
 Input data file data1:
<name>A<\name>
<id>A1<\id>
<add>A2<\add>
<id>B1<\id>
<name>B<\name>
<add>B2<\add>
<add>C2<\add>
<id>C1<\id>
<name>C<\name>

-----
 Results:
<name>A<\name>
<id>A1<\id>
<add>A2<\add>
<name>B<\name>
<id>B1<\id>
<add>B2<\add>
<name>C<\name>
<id>C1<\id>
<add>C2<\add>

See option descriptions at https://www.unix.com/man-page/debian/1/msort/

This has the advantage of passing over the file only once, but the sort itself is slower than GNU sort.

Best wishes ... cheers, drl
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Search for xml tags in a file

Hi, I need to search for a pattern like : <A:UserAttr Name="ACTIVITY_ID"> <A:Value>1111120</A:Value> </A:UserAttr> Let us the there is a dir /tmp that contains 5 xml file. each of them multiple above tags in the file. If found all the three line would be... (2 Replies)
Discussion started by: tictactoe
2 Replies

2. Shell Programming and Scripting

Removing unwanted tags from xml file

I have a XML file given as below: "<ProductUOMAlternativeDetails> <removetag> <UOMCode>EA</UOMCode> <numeratorForConversionToBaseUOM>1</numeratorForConversionToBaseUOM> <denominatorForConversionToBaseUOM>1</denominatorForConversionToBaseUOM> <length>0.59</length> <width>0.96</width> ... (3 Replies)
Discussion started by: vikingh
3 Replies

3. Shell Programming and Scripting

How to add the multiple lines of xml tags before a particular xml tag in a file

Hi All, I'm stuck with adding multiple lines(irrespective of line number) to a file before a particular xml tag. Please help me. <A>testing_Location</A> <value>LA</value> <zone>US</zone> <B>Region</B> <value>Russia</value> <zone>Washington</zone> <C>Country</C>... (0 Replies)
Discussion started by: mjavalkar
0 Replies

4. Shell Programming and Scripting

Shell Command to compare two xml lines while ignoring xml tags

I've got two different files and want to compare them. File 1 : HTML Code: <response ticketId="944" type="getQueryResults"><status>COMPLETE</status><description>Query results fetched successfully</description><recordSet totalCount="1" type="sms_records"><record... (1 Reply)
Discussion started by: Shaishav Shah
1 Replies

5. Shell Programming and Scripting

Perl : to split the tags from xml file

I do have an xml sheet as below where I need the perl script to filter only the hyperlink tags. <cols><col min="1" max="1" width="30.5703125" customWidth="1"/><col min="2" max="2" width="7.140625" bestFit="1" customWidth="1"/> <col min="3" max="3" width="32.28515625" bestFit="1"... (3 Replies)
Discussion started by: scriptscript
3 Replies

6. Shell Programming and Scripting

How to add Xml tags to an existing xml using shell or awk?

Hi , I have a below xml: <ns:Body> <ns:result> <Date Month="June" Day="Monday:/> </ns:result> </ns:Body> i have a lookup abc.txtt text file with below details Month June July August Day Monday Tuesday Wednesday I need a output xml with below tags <ns:Body> <ns:result>... (2 Replies)
Discussion started by: Nevergivup
2 Replies

7. Shell Programming and Scripting

Split XML file based on tags

Hello All , Please help me with below requirement I want to split a xml file based on tag.here is the file format <data-set> some-information </data-set> <data-set1> some-information </data-set1> <data-set2> some-information </data-set2> I want to split the above file into 3... (5 Replies)
Discussion started by: Pratik4891
5 Replies

8. Shell Programming and Scripting

How to get distinct Tags from an XML file?

Sample XML file: <?xml version="1.0" encoding="UTF-16" ?> <Provider PROVIDER="xx" SCHEMA_VERSION="2.5"> <Institution UNINUM="xxxx" EXTRACT_DATE="2013-12-31" CUSTOMER_ROW_COUNT="1577" LOAN_ROW_COUNT="3322" BOOK_VALUE_DOLLARS="720163381.46"> <Customer CIF="dww213">... (11 Replies)
Discussion started by: Ariean
11 Replies

9. Shell Programming and Scripting

Extract the specific tags in a XML file

Hello Shell Gurus, I have a requirement to get the specific tags from a XML file. Here is my code snippet <jdbc-system-resource> <name>SDPData Source</name> <target>AdminServer,osb_server1,soa_server1</target> ... (30 Replies)
Discussion started by: Siv51427882
30 Replies

10. UNIX for Beginners Questions & Answers

How to pull multiple XML tags from the same XML file in Shell.?

I'm searching for the names of a TV show in the XML file I've attached at the end of this post. What I'm trying to do now is pull out/list the data from each of the <SeriesName> tags throughout the document. Currently, I'm only able to get data the first instance of that XML field using the... (9 Replies)
Discussion started by: hungryd
9 Replies
XML2PO(1)							  [FIXME: manual]							 XML2PO(1)

NAME
xml2po - program to create a PO-template file from a DocBook XML file and merge it back into a (translated) XML file SYNOPSIS
xml2po [OPTIONS] [XMLFILE] DESCRIPTION
This manual page documents briefly the xml2po command. xml2po is a simple Python program which extracts translatable content from free-form XML documents and outputs gettext compatible POT files. Translated PO files can be turned into XML output again. It can work it's magic with most "simple" tags, and for complicated tags one has to provide a list of all tags which are "final" (that will be put into one "message" in PO file), "ignored" (skipped over) and "space preserving". OPTIONS
The program follows the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. -a, --automatic-tags Automatically decide if tags are to be considered "final" or not. -k, --keep-entities Don't expand entities (default). See also the -e option. -e, --expand-all-entities Expand all entities (including SYSTEM ones). -m, --mode=TYPE Treat tags as type TYPE (default: docbook). -o, --output=FILE Print resulting text (XML while merging translations with "-p" or "-t" options, POT template file while extracting strings, and translated PO file with "-r" option) to the given FILE. -p, --po-file=FILE Specify a PO FILE containing translation and output XML document with translations merged in. -r, --reuse=FILE Specify a translated XML document in FILE with the same structure to generate translated PO file for XML document given on command line. -t, --translation=FILE Specify a MO file containing translation and output XML document with translations merged in. -u, --update-translation=LANG.po Update a PO file using msgmerge. -l, --language=LANG Explicitly set language of the translation. -h, --help Show summary of options. -v, --version Show version of program. EXAMPLES
Creating POT template files To create a POT template book.pot from an input file book.xml, which consists of chapter1.xml and chapter2.xml (external entities), run: /usr/bin/xml2po -o book.pot book.xml chapter1.xml chapter2.xml To expand entities use the -e option: /usr/bin/xml2po -e -o book.pot book.xml Creating translated XML files (merging back PO files) After translating book.pot into LANG.po, merge the translations back by using -p option for each XML file: /usr/bin/xml2po -p LANG.po -o book.LANG.xml book.xml /usr/bin/xml2po -p LANG.po -o chapter1.LANG.xml chapter1.xml /usr/bin/xml2po -p LANG.po -o chapter2.LANG.xml chapter2.xml If you used the -e option to expand entities, you should use it again to merge back the translation into an XML file: /usr/bin/xml2po -e -p LANG.po -o book.LANG.xml book.xml Updating PO files When base XML file changes, the real advantages of PO files come to surface. There are 2 ways to merge the translation. The first is to produce a new POT template file (additionally use the -e if you decided earlier to expand entities). Afterwards run msgmerge to merge the translation with the new POT file: /usr/bin/msgmerge -o tmp.po LANG.po book.pot Now rename tmp.po to LANG.po and update your translation. Alternatively, xml2po provides the -u option, which does exactly these two steps for you. The advantage is, that it also runs msgfmt to give you a statistical output of translation status (count of translated, untranslated and fuzzy messages). Additionally use the -e if you decided earlier to expand entities: /usr/bin/xml2po -u LANG.po book.xml SEE ALSO
msgmerge (1), msgfmt (1) AUTHOR
This manual page was written by Daniel Leidert daniel.leidert@wgdd.de for the Debian system (but may be used by others). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 any later version published by the Free Software Foundation. COPYRIGHT
Copyright (C) 2005 Daniel Leidert [FIXME: source] 2005/02/10 XML2PO(1)
All times are GMT -4. The time now is 11:19 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy