[SOLVED] Replace a string in nextline after searching a pattern


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [SOLVED] Replace a string in nextline after searching a pattern
# 8  
Old 09-14-2012
Try this..

Code:
 awk '{if ($0 ~ /Element1/ || $0 ~ /Element2/ || $0 ~ /<user>/) { print;getline;if(/ue>#!/) {$0 ="<value>#!AAAAA</value>"} else{if(/rd>#!/){$0="<password>#!AAAAA</password>"}}}}1' file


Last edited by pamu; 09-14-2012 at 05:53 PM.. Reason: edited..
# 9  
Old 09-14-2012
Thanks for all the suggestions; still one question remains in mind, does awk or sed commands updates same input file.
# 10  
Old 09-14-2012
Quote:
Originally Posted by mailing2vamsi
Thanks for all the suggestions; still one question remains in mind, does awk or sed commands updates same input file.
practically speaking no one....(this is as per my knowledge..Smilie)

And this is always avoidable to perform reading and writing operation on the same file at the same time...Smilie

You have to create one more file and mv it to original file..

Last edited by pamu; 09-14-2012 at 06:31 PM..
# 11  
Old 09-14-2012
Code:
perl -pi -e

writes to same file and it will allow to replace a string with other, but really not aware on how to place a condition before repalce.
If some option to search for a value and then to next line, it will be helpful.
# 12  
Old 09-14-2012
It is never a good idea to edit your originals. What if there's a bug in your program? You've wrecked your input data! Make a new file and check, or at least back up first.
# 13  
Old 09-14-2012
I agree with Corona688 that it is never a good idea to edit your originals without a backup.

I am also concerned that every post you make changes what you want to do. First we're changing a value tagged "@%ID_Value" in a line following a line that contains a name tagged string ending in "/ID" to an unspecified value. Then the new string to replace "@%ID_Value" is specified to be "New Value". And, now you want to change ">#!" followed by any characters up to the last "<" on the line to (no matter what tags are used on the line following a line that contains Element1, Element2, or user (no matter what tags appear on that line).

This sounds like a very dangerous set of changes to make since "user" could easily appear as a value in a data element in your XML file as well as being a tag, but the following ed script will do what you're asking for after saving a backup copy of your original file (assuming your original xml file is named in.xml. If your xml file has a different name, change in.xml in the following script to the name of the xml file you want to update. The backup copy of your file will have the name of your xml file with an underscore character prepended (e.g., _in.xml):
Code:
#!/bin/ksh
file=in.xml
ed -s $file <<-EOF
        w _$file
        g/Element[12]/.+1s/>#!.*</>#!AAAAA</
        g/user/.+1s/>#!.*</>#!AAAAA</
        w
EOF


Last edited by Don Cragun; 09-14-2012 at 08:14 PM.. Reason: Fix typos
This User Gave Thanks to Don Cragun For This Post:
# 14  
Old 09-20-2012
It worked, thanks to every one for your help and suggestions.

---------- Post updated at 05:59 PM ---------- Previous update was at 11:21 AM ----------

Hey would like to check one more thing. Can we have case sensitive check in ed as an additional requirement I can get first comparision element as "Element" or "ELEMENT" or "element"

Can some one throw some lite on it.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace string - searching from input file

Hi I need help with writing a script to change a string in a file. The script needs to read an input list (list.txt) file line by line searching for that string in a text.file. Once the string is found the last few words in the string should be replaced. eg list.txt will contain hello my... (6 Replies)
Discussion started by: sudobash
6 Replies

2. UNIX for Dummies Questions & Answers

[Solved] Replace the second pattern alone in VI.

I have lines like: table10 table_name_10 table10 table_name_10 table20 table_name_20 table20 table_name_20 table30 table_name_30 table30 table_name_30 I want to change the second "table_names" in all lines to test_table_name. Required output would be: table10 table_name_10 table10... (19 Replies)
Discussion started by: gctex
19 Replies

3. Shell Programming and Scripting

Replace string in line below specific pattern?

Hi, I'm trying to replace a string with sed, in a text file containing this pattern: location alpha value x location beta value y location gamma value y location delta value y location theta value z ... What I want to achieve is: Find location beta into text file... (1 Reply)
Discussion started by: TECK
1 Replies

4. Shell Programming and Scripting

Replace a string pattern

Hi, I have a CSV with following type of data and would like to replace the timestamp information with 'null' string. Can you please suggest me on same? 8,1,'1','1',11,'2013-08-12 18:34:17.0','null',1,'2013-08-12 18:34:17.0','null','PROMOTIONAL','12','1','11','11',11,'0' Thanks for your... (10 Replies)
Discussion started by: bhupinder08
10 Replies

5. Shell Programming and Scripting

Searching a particular string pattern in 10000 files

Problem Statement:- I need to search a particular `String Pattern` in around `10000 files` and find the records which contains that `particular pattern`. I can use `grep` here, but it is taking lots of time. Below is the command I am using to search a `particular string pattern` after... (3 Replies)
Discussion started by: raihan26
3 Replies

6. Shell Programming and Scripting

sed or awk command to replace a string pattern with another string based on position of this string

here is what i want to achieve... consider a file contains below contents. the file size is large about 60mb cat dump.sql INSERT INTO `table1` (`id`, `action`, `date`, `descrip`, `lastModified`) VALUES (1,'Change','2011-05-05 00:00:00','Account Updated','2012-02-10... (10 Replies)
Discussion started by: vivek d r
10 Replies

7. Shell Programming and Scripting

Searching String from set of similar File pattern from the Dir

Guys, Here is the script that searches string from the set of similar files from the log directory, All the file patterns are defined as input file, from where the script should map to those files in the LOG_DIR and should start searching the strings from all those similar files. ... (1 Reply)
Discussion started by: raghunsi
1 Replies

8. Shell Programming and Scripting

Pattern searching and replace

I have data this data in a text file 1 PSE480 (P) 2 PSE600 (P) 3 (P) PSE600 4 (P) PSE720 5 PSE600 (P) 6 PSE720 (P) 7 x12(P)PSE360 8 PSE450 (P) 9 PSE540 (P) 10 PSE720 (P) 11 (P) PSE1440 12 24sPSE720 (P) What i want id the last 3 (or 4 in one case) characters after PSE my final... (2 Replies)
Discussion started by: lifzgud
2 Replies

9. Shell Programming and Scripting

Match pattern and replace with string

hi guys, insert into /*<new>*/abc_db.tbl_name this is should be replaced to insert into /*<new>*/${new}.tbl_name it should use '.' as delimiter and replace is there any way to do it using sed (6 Replies)
Discussion started by: sol_nov
6 Replies

10. UNIX for Dummies Questions & Answers

Searching for files with certain string pattern

Hello All I would like to search for files containing certain string pattern under all the directories under /vobs/vobname and print the output to a file in my home directory. How can I do this? Note: /vobs/vobname conatins several directories. Thank You in advance newbetounix (1 Reply)
Discussion started by: intrigue
1 Replies
Login or Register to Ask a Question