Multiline pattern search using sed or awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Multiline pattern search using sed or awk
# 1  
Old 06-14-2010
Question Multiline pattern search using sed or awk

Hi friends,
Could you please help me to resolve the below issue.

Input file :-

Code:
<Node>
     <username>abc</username>
<password>ABC</password>
<Node>
<Node>
    <username>xyz</username>
       <password>XYZ</password>
<Node>
<Node>
              <username>mnp</username>
      <password>MNP</password>
<Node>
<Node>
               <username>pqj</username>
      <password>PQJ</password>
   <Node>

i have a var1 and var2 as inputs. If var1 matches in username i need to replace the password value with var2. Could you please help me how can i doit. i tried with SED. But failed. because of somany limitations \n is not working properly for me

I have lot of files need to be processed like this . and each file is morethan 1 mb.

Moderator's Comments:
Mod Comment Please refrain using upper case letter all the way in subjects to get more attention, ty.

Last edited by zaxxon; 06-14-2010 at 08:19 AM.. Reason: Added code tags!
# 2  
Old 06-14-2010
Code:
awk -vvar1="abc" -vvar2="zzz" '$0~"<username>"var1"</username>"{print;getline;$0="<password>"var2"</password>";print;next}1' infile


Last edited by bartus11; 06-14-2010 at 08:17 AM..
# 3  
Old 06-14-2010
MySQL

Or with sed:

Code:
var1=abc
var2=NEW

sed -n "/${var1}/{N;s/${var1}\(<\/username>\n<password>\).*/${var1}\1\\${var2}<\/password>/p}" file

HTH Chris
# 4  
Old 06-14-2010
Code:
awk -F'[<>]' '$3==var1{f=1}f&&$2=="password"{sub($3,var2);f=0}1' var1="xyz" var2="newPass" file

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Grep/awk using a begin search pattern and end search pattern

I have this fileA TEST FILE ABC this file contains ABC; TEST FILE DGHT this file contains DGHT; TEST FILE 123 this file contains ABC, this file contains DEF, this file contains XYZ, this file contains KLM ; I want to have a fileZ that has only (begin search pattern for will be... (2 Replies)
Discussion started by: vbabz
2 Replies

2. Shell Programming and Scripting

How to use sed to search a particular pattern in a file backward after a pattern is matched.?

Hi, I have two files file1.txt and file2.txt. Please see the attachments. In file2.txt (which actually is a diff output between two versions of file1.txt.), I extract the pattern corresponding to 1172c1172. Now ,In file1.txt I have to search for this pattern 1172c1172 and if found, I have to... (9 Replies)
Discussion started by: saurabh kumar
9 Replies

3. Shell Programming and Scripting

Using sed to pattern match within a particular multiline block and take action

Hi all, This is my first post, so please go easy if I broke some rules. Not accustomed to posting in forums... :) I'm looking for help on pattern matching within a multiline block and looking to highlight blocks/block-ids that do NOT contain a particular pattern. For example an input file... (5 Replies)
Discussion started by: tirodad
5 Replies

4. Shell Programming and Scripting

Awk to match a pattern and perform a search after the first pattern

Hello Guyz I have been following this forum for a while and the solutions provided are super useful. I currently have a scenario where i need to search for a pattern and start searching by keeping the first pattern as a baseline ABC DEF LMN EFG HIJ LMN OPQ In the above text i need to... (8 Replies)
Discussion started by: RickCharles
8 Replies

5. UNIX for Dummies Questions & Answers

sed multiline pattern match

How can I write a script that takes a cisco config file and outputs every occurrence of two, or more, pattern matches through the whole config file? For example, out of a config file, i want to print out every line with interface, description and ip address through the whole file, and disregard... (3 Replies)
Discussion started by: knownasthatguy
3 Replies

6. UNIX for Dummies Questions & Answers

One liner pattern search with awk/sed/grep

I have an array containing bunch of characters. I have to check this array for specific character and if "Not Found than" use a goto statement to go to USAGE set options = (A B C D E F) @ i = 0 while ($i <= ${#options}) if ($options != "F" || $options != "D") then goto USAGE endif @... (1 Reply)
Discussion started by: dixits
1 Replies

7. Shell Programming and Scripting

Help to search multiple pattern in file with grep/sed/awk

Hello All, I have a file which is having below type of data, Jul 19 2011 | 123456 Jul 19 2011 | 123456 Jul 20 2011 | 123456 Jul 20 2011 | 123456 Here I wanted to grep for date pattern as below, so that it should only grep "Jul 20" OR "Jul ... (9 Replies)
Discussion started by: gr8_usk
9 Replies

8. Shell Programming and Scripting

Awk/Sed: Search Pattern from file and Print

Hi, I want to search for patterns (from a file) in a file and print the line matching the patterns and the line before it. I have to search for 100s of patterns from a file. Any help with AWK or Sed. Thanks! (2 Replies)
Discussion started by: saint2006
2 Replies

9. Shell Programming and Scripting

Awk match a multiline pattern

Hello! i wanna match in a config file, one text with more than one lines, something like this: CACHE_SIZE{ 10000 M } I have problems with the ends of line, i think that i can match the end of the line with \n, but i can't get it Someone can help me with the regular expression? ... (18 Replies)
Discussion started by: claw82
18 Replies

10. Shell Programming and Scripting

SED Search Pattern and Replace with the Pattern

Hello All, I have a string "CP_STATUS OSSRC_R6_0_Shipment_R1H_CU AOM_901046 R1H_LLSV1_2008031", and I just want to extract LLSV1, but I dont get the expected result when using the sed command below. # echo "CP_STATUS OSSRC_R6_0_Shipment_R1H_CU AOM_901046 R1H_LLSV1_2008031" | awk '{print... (4 Replies)
Discussion started by: racbern
4 Replies
Login or Register to Ask a Question