Search a string and append text after the string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Search a string and append text after the string
# 1  
Old 07-17-2008
Search a string and append text after the string

Hi,

I have a file like this...

<o t="Batch" id="8410" p="/" g="32">
<a n="name">
<v s="DBBA1MM"/>
</a>
<a n="owner">
<v r="/[AdminUser]Administrator"/>
</a>
<a n="rights">
<v s="95"/>

</a>
<a n="debugLevel">
<v s="3"/>

</a>
<a n="avsStoreLoc">
<v s="/home/kp1771/fw_base_path/collectors/DBBA1MM/avs"/>
</a>
</o>
<o t="Batch" id="8410" p="/" g="27">
<a n="name">
<v s="DBBA1MM"/>
</a>
<a n="owner">
<v r="/[AdminUser]Administrator"/>
</a>
<a n="rights">
<v s="95"/>
</a>

<a n="avsStoreLoc">
<v s="/home/kp1771/fw_base_path/collectors/DBBA1MM/avs"/>
</a>
</o>

I have to add

<a n="debugLevel">
<v s="3"/>
</a>


after

<a n="rights">
<v s="95"/>
</a>



if <a n="debugLevel">
<v s="3"/>
</a>
does not exits. I have to add the tag in red
If exists has to modify
<a n="debugLevel">
<v s="4"/>
</a>



can you help me on this..any type of help is appriciated thanks
# 2  
Old 07-17-2008
Have you tried anything so far? I would use awk to do this. When it finds <a n="rights"> you could read ahead a few lines using getline. If it contains "debugLevel" you could print out the new debug level, if not, just add debug level 3. For every other line, just print it.
# 3  
Old 07-17-2008
Hi Annihilannic,
I used awk '/rights/,/avsStoreLoc/ { print }' a.xml
to extract the text between "rights" and "avsStoreLoc" ..but it didnt help me much
# 4  
Old 07-17-2008
Here, I've done most of the work for you, you should be able to finish it easily:

Code:
awk '
        /n="rights"/ {
                print
                getline ; print
                getline ; print
                getline
                if (match($0,"debugLevel")) {
                        print "<a n=\"debugLevel\">\n<v s=\"4\"/>\n</a>"
                        # consume and discard next two lines
                        getline
                        getline
                } else {
                        # do some stuff here
                        print
                }
                next
        }
        1 # print other lines
' inputfile > outputfile

You just need to fill in the "do some stuff here" part.
# 5  
Old 07-17-2008
awesome..Thanks Annihilannic..It helped ..thanks
# 6  
Old 07-17-2008
Hi Annihilannic,
The script works good..I have one more concern i should be able to print the changes in the same file where we are searching..how can I do.
# 7  
Old 07-17-2008
Code:
cp -p originalfile originalfile.bak && awk '<your script here>' originalfile.bak > originalfile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Search a string and display its location on the entire string and make a text file

I want to search a small string in a large string and find the locations of the string. For this I used grep "string" -ob <file name where the large string is stored>. Now this gives me the locations of that string. Now how do I store these locations in a text file. Please use CODE tags as... (7 Replies)
Discussion started by: ANKIT ROY
7 Replies

2. Shell Programming and Scripting

Need comand or script for append text after searching for the desired string

Hi all, i have a generated report in unix in the following command like input.txt 47.85,10 0124,42.35,8 0125,3.5,2 the input file format is fixed I need the my output file with append text as below output.txt 0124 amount:42.35 0125 amount:3.5 0124 count : 8 0125... (34 Replies)
Discussion started by: hemanthsaikumar
34 Replies

3. Shell Programming and Scripting

To Search for a string and to extract the string from the text

Hi Team I have an huge xml where i need to search for a ceratin numbers. For example 2014-05-06 15:15:41,498 INFO WebContainer : 10 CommonServicesLogs - CleansingTriggerService.invokeCleansingService Entered PUBSUB NOTIFY MESSAGE () - <?xml version="1.0" encoding="UTF-8"... (5 Replies)
Discussion started by: Kannannair
5 Replies

4. Shell Programming and Scripting

Search a string in a text file and add another string at the end of line

Dear All I am having a text file which is having more than 200 lines. EX: 001010122 12000 BIB 12000 11200 1200003 001010122 2000 AND 12000 11200 1200003 001010122 12000 KVB 12000 11200 1200003 In the above file i want to search for string KVB... (5 Replies)
Discussion started by: suryanarayana
5 Replies

5. Shell Programming and Scripting

Search a string in a text file and add another string at the particular position of a line

I am having a text file which is having more than 200 lines. EX: 001010122 12000 BIB 12000 11200 1200003 001010122 2000 AND 12000 11200 1200003 001010122 12000 KVB 12000 11200 1200003 In the above file i want to search for string KVB and add/replace... (1 Reply)
Discussion started by: suryanarayana
1 Replies

6. Shell Programming and Scripting

sed - Find a String and append a text end of the Line

Hi, I have a File, which have multiple rows. Like below 123456 Test1 FNAME JRW#$% PB MO Approver XXXXXX. YYYY 123457 Test2 FNAME JRW#$% PB MO Super XXXXXX. YYYY 123458 Test3 FNAME JRW#$% PB MO Approver XXXXXX. YYYY I want to search a line which contains PB MO Approver and append... (2 Replies)
Discussion started by: java2006
2 Replies

7. Shell Programming and Scripting

Search several string and convert into a single line for each search string using awk command AIX?.

I need to search the file using strings "Request Type" , " Request Method" , "Response Type" and by using result set find the xml tags and convert into a single line?. below are the scenarios. Cat test Nov 10, 2012 5:17:53 AM INFO: Request Type Line 1.... (5 Replies)
Discussion started by: laknar
5 Replies

8. Shell Programming and Scripting

Search for a string, then append character to end of that line only

I have 2 files that I am working with $ cat file1 server1 server3 server5 server6 server8 $ cat file2 server1;Solaris; server2; SLES; server3;Linux; server4; Solaris; server5;SLES; server6;SLES; server7;Solaris; server8;Linux; (1 Reply)
Discussion started by: snoman1
1 Replies

9. Shell Programming and Scripting

Trying to search for a string and append text only once

Hi I am trying to search for a particular occurrence of a string in a file, and if found, append another string to the end of that line. Here is my file contents: column1 userlist default nowrite=3 output=4 column2 access default nowrite=3 Here is the code: A="user=1... (1 Reply)
Discussion started by: bludhemn
1 Replies

10. Shell Programming and Scripting

appending string to text file based on search string

Hi, I need to append string "Hi" to the beginning of the lines containing some specific string. How can I achieve that? Please help. Malay (1 Reply)
Discussion started by: malaymaru
1 Replies
Login or Register to Ask a Question