Check null value in xml


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Check null value in xml
# 8  
Old 03-04-2013
Hi Bipin,

Thanks for the reply.

I am pulling my xml from logs. First I want to check whether my xml is empty or not. If it is not empty then I have to check the tag value of timestamp1. If that is empty then I have to insert current timestamp.

Could you please explain me the code.
# 9  
Old 03-04-2013
Sure, here is the explanation of code:
Code:
awk -F'[<>]' '                                                  # Set < > as field separators.
BEGIN {                                                         # BEGIN block.
                cmd = "date +%Y%m%d%H%M%S"                      # Define cmd = "date +%Y%m%d%H%M%S"
} /<timestamp1>/ {                                              # Search for pattern: <timestamp1>
        if ( $3 == "" )                                         # If pattern found check if 3rd field is NULL (3rd field is tag value)
        {
                cmd | getline dt                                # Run cmd and read output in variable: dt
                close(cmd)                                      # Close cmd
                $0 = "<timestamp1>" dt "</timestamp1>"          # Set current record = <timestamp1> dt (current timestamp) </timestamp1>
        }
} 1 ' xml                                                       # 1 == true, so print current record.

I hope this helps.
This User Gave Thanks to Yoda For This Post:
# 10  
Old 03-05-2013
Above is working well if timestamp1 is the only tag in one line, and if there's no gap (space) between the two tags. For a bit more generic case, try
Code:
awk ' BEGIN {"date +%Y%m%d%H%M%S"|getline TS}
     {sub(/<timestamp1><\/timestamp1>/, "<timestamp1>"TS"<\/timestamp1>")}
     1
    ' FS="<|>" file

This User Gave Thanks to RudiC For This Post:
# 11  
Old 03-05-2013
Thanks Bipin and RudiC... Both codes worked as expected.

Thanks a lot Bipin for explaining me the code.

Code:
awk '/<submit>/,/<\/submit>/' log.out > xml

This will pull the entire xml tag from log.out. From this I it will check the empty value for timestamp1. But I want to pull the entire xml from /<submit>/,/<\/submit>/ only if the tag value of timestamp1 is empty. Could you please help me
# 12  
Old 03-05-2013
The easiest way would be to scrap the result file if condition is not met:
Code:
awk     ' BEGIN {"date +%Y%m%d%H%M%S"|getline TS; n=1}
         /<timestamp1>/ {n=sub(/<timestamp1> *<\/timestamp1>/, "<timestamp1>"TS"<\/timestamp1>")}
         n
         !n {exit 1}
        ' FS="<|>" file && echo good || echo bad

If bad, scrap result file.
# 13  
Old 03-05-2013
Hi RudiC,

The above code is pulling the xml file from /<submit> till <timestamp1> even if the timestamp1 is not empty.

I want to pull the entire xml if the tag value of timestamp1 is empty.

Is it possible to add the condition to the below line so that it will pull the entire xml tag only if the tag value of timestamp1 is empty.

Code:
awk '/<submit>/,/<\/submit>/' log.out > xml


Last edited by Neethu; 03-05-2013 at 08:36 AM..
# 14  
Old 03-06-2013
Not sure if I got all requirements correctly, but you could give this a shot:
Code:
awk     ' BEGIN         {"date +%Y%m%d%H%M%S"|getline TS; n=1}          # prepare TS variable for timestamp
         /<submit>/,                                                    # discard e.th. outside "submit" tags
         /<\/submit>/   {if ($0 ~ /<timestamp1>/)                       # if "timestamp1" tag found within "submit" tags
                           {n = sub(/<timestamp1> *<\/timestamp1>/,     # replace zero+ spaces (= empty tag value)
                                    "<timestamp1>"TS"<\/timestamp1>")}  # with TS contents; n = 0 if not empty
                         if (!n) {exit 1}                               # if n = 0, i.e. non-empty tag value, quit with error
                         print           
                        }
        '  file > resultfile || rm resultfile                           # if error, i.e. non-empty tag value, remove output
$ cat resultfile 
<submit>
<ID>16</ID>
<Reference/>
<timestamp1>20130306225424<\/timestamp1>
....
.....
</submit>

If resultfile survives, it will have the before empty tag filled with actual timestamp. Resultfile will not survive timestamps with data in them.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Check null values column

hi, I had a small question.I had a file from which i need to extract data. I have written the below script to check if the file exists and if it exists extract requierd columns from the file. IFILE=/home/home01/Report_1.csv OFILE=/home/home01/name.csv.out1 if #Checks if file exists... (1 Reply)
Discussion started by: Vivekit82
1 Replies

2. Shell Programming and Scripting

If condition to check null variable

Guys, Please help me on the below sample.cfg var=NULL sample.sh #!/bin/sh . /sample.cfg if ;then 1 st command here else 2 nd command here fi (3 Replies)
Discussion started by: AraR87
3 Replies

3. Shell Programming and Scripting

Check for null values in columns

Hi , I have below data with fixed with of 52 bytes having three columns value data. 01930 MA GLOUCESTER 02033 02025 COHASSET 01960 MA ... (3 Replies)
Discussion started by: sonu_pal
3 Replies

4. Shell Programming and Scripting

Check for null

Hi Champs!!! im a newbie in unix, need ur expert help for my problem... I need to search if there are any "NULL" entries in the string String without Null Str1: 203652|1000003653|tellt|RUPV|4649|1|07/28/2011 01:56:12 String with Null (RUPV is removed) Str2:... (5 Replies)
Discussion started by: guruprasad7
5 Replies

5. Shell Programming and Scripting

check for null

hi, i have 3 lines of output , if second line exists then only condition within the if loop has to exeute other wise it has exit from loop. i had tried like this but not getting please help me ... Code: if ; then echo "success" else echo "" Use code tags please,... (8 Replies)
Discussion started by: sreelu
8 Replies

6. UNIX for Dummies Questions & Answers

Check for null values in a column

Hi All, I have a file with 10 columns and get the required data for nine columns properly except 8th. In 8th column i have both NULL and NON NULL values...i.e certain records have values for all the columns including 8th column and certain records have 8th column as NULL.My requisite is,without... (20 Replies)
Discussion started by: ganesh_248
20 Replies

7. Shell Programming and Scripting

How to check for null value from makefile

My makefile has some code as follows: if ; then \ echo copying tools; \ cp -f `../${TOOLS_ROOT_PATH}/ext_tools.sh 1` ${EXTERNAL_BIN_DIR} || exit $$?;\ fi; \ The ext_tools.sh is as follows: cat ttx.conf | grep external | grep -v ^# | awk '{print $1}' It can sometime result... (1 Reply)
Discussion started by: jake_ryan
1 Replies

8. Shell Programming and Scripting

how to check null variable

korn shell If then update_smartcare_user_password "$u_id" else echo "Not a database user" fi i get this error Syntax error at line *** : `then' is not expected. what should i do. I want to check whether $a is null or not. (2 Replies)
Discussion started by: sachin.gangadha
2 Replies

9. Shell Programming and Scripting

check for not null string in file

Hi, If, in a text file a string is expected at a certain fixed position(for eg at position 5 or from 5-10 on every line) how to check whether data is present on that position or not? Thnx in advance (6 Replies)
Discussion started by: misenkiser
6 Replies

10. Shell Programming and Scripting

check for NULL variable

Hello I want to check for NULL variable.. but this is not working..please help thanks in advance esham (2 Replies)
Discussion started by: esham
2 Replies
Login or Register to Ask a Question