Complex find and replace only 1st instance string with dynamic combination


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Complex find and replace only 1st instance string with dynamic combination
# 1  
Old 09-30-2011
Complex find and replace only 1st instance string with dynamic combination

test.txt is the dynamic file but some of combination are fix

like below are the lines
Code:
;wonder_off =
;wonder_off = disabled
wonder_off =
wonder_off = disabled

the test.txt can content them in any order

Code:
#cat test.xt 
;wonder_off =
;wonder_off = disabled
wonder_off =
wonder_off = disabled

OR

Code:
#cat test.xt 
wonder_off =
wonder_off = disabled
;wonder_off =
;wonder_off = disabled

I need to find and replace only 1st instatnce of the test.xt

example if:

Code:
#cat test.xt 
;wonder_off =
;wonder_off = disabled
wonder_off =
wonder_off = disabled

find ";wonder_off =" and replace it with "wonder_off = "Enabled,working_bar,extra_deft""


Result should be :
Code:
cat test.xt 
wonder_off = "Enabled,working_bar,extra_deft"
;wonder_off = disabled
wonder_off =
wonder_off = disabled


I can managed to get only 1st line which can be any combination i mention above
Code:
#VAR=`cat test.xt | head -1`


#echo $VAR
;wonder_off =

How can I Find only 1st instance with matching string and replace it with "wonder_off = "Enabled,working_bar,extra_deft""

Last edited by Scott; 09-30-2011 at 03:30 PM.. Reason: CODE TAGS...
# 2  
Old 09-30-2011
AWK

Hi,
Try this untested code
Code:
awk 'BEGIN{done=0;}$0 ~ /;wonder_off=/{if(done ==0){gsub(/;wonder_off/,";wonder_off=\"Enabled,working_bar\"",$0);done=1;}print;}' file

pls configure substitute string based on your req.
Cheers,
Ranga:-)
# 3  
Old 09-30-2011
replace FILE with your file name :

Code:
sed -i "`grep -n ^\;wonder_off FILE|cut -d':' -f1 |head -1`s/\;wonder_off =/wonder_off = \"Enabled,working_bar,extra_deft\"/" FILE

for reminder, there are two FILE to replace in the code Smilie
# 4  
Old 09-30-2011
Thanks you both

but you missed one VERY IMP thing


the first line can be anything from the combination as i mention
can be
;wonder_off =
can be
;wonder_off = disabled
can be
wonder_off =
can be
wonder_off = disabled
# 5  
Old 09-30-2011
oh, not a problem , just add a $ at the end of grep regex :
Code:
sed -i "`grep -n "^\;wonder_off$" FILE|cut -d':' -f1 |head -1`s/\;wonder_off =/wonder_off = \"Enabled,working_bar,extra_deft\"/" FILE

and its done Smilie
now replace
Code:
;wonder_off

to anything you want to find , and replace
Code:
;wonder_off =

to anything you want to replace.

Last edited by ieth0; 10-01-2011 at 08:19 AM.. Reason: code tags
# 6  
Old 10-01-2011
Code:
$ sed 's,;wonder_off =$,wonder_off = "Enabled\,working_bar\,extra_deft",1' infile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Solaris

How to find and replace a string?

Dear All I need to find and replace a string in a set of files. I try as : #find / -name "*"|xargs grep "Tektra"|grep -v "Tektra GSM BTS" But it doesn't work. It just finds the string in the files. I need to find and replace it.Can you please let me know how to correct it? Thank you (2 Replies)
Discussion started by: hadimotamedi
2 Replies

2. Shell Programming and Scripting

HPUX find string in directory and filetype and replace string

Hi, Here's my dilemma. I need to replace the string Sept_2012 to Oct_2012 in all *config.py files within the current directory and below directories Is this possible? Also I am trying to find all instances of the string Sept_2012 within files in the current directory and below I have... (13 Replies)
Discussion started by: pure_jax
13 Replies

3. Shell Programming and Scripting

find string and replace with string in other file

Dear all, I need your help, I have file like this: file1:23456 01910964830098775635 34567 01942809546554654323 67589 26546854368698023653 09778 58716868568576876878 08675 86178546154065406546 08573 54165843543054354305 . .file2: 23456 25 34567 26 67589 27 (2 Replies)
Discussion started by: attila
2 Replies

4. Shell Programming and Scripting

awk - find first instance of string after NR==10

How do I use awk to find the NR of first instance of a specific string after eg NR==10? I need to find the first instance of the word "class" after a specific NR. (2 Replies)
Discussion started by: locoroco
2 Replies

5. Shell Programming and Scripting

find the first instance after a string

I have this file (below) and need to get out specific data that appears after OSE1_1.FIX, but before OSE1_2.FIX. Specifically I need to get all of the data after "ROW80_20:", "ROW80_21:", "ROW80_22:" & "ROW80_23:" then I need to do the same for data the appears after OSE1_2.FIX, but before... (2 Replies)
Discussion started by: josslate
2 Replies

6. Shell Programming and Scripting

pls help! complex find and replace

help pls... i would like to change this CURVE2 565489 789458 1258649 random data here... CURVE2 565489 568795 6548921 random data here... CURVE2 565489 123598 6446259 random data here... CURVE2 565489 672956 2489657 into this CURVE2 565489 586423 1258649 random data here...... (2 Replies)
Discussion started by: lakanino
2 Replies

7. Shell Programming and Scripting

Find the position of a string and replace with another string

Hi, I have a file named "Test_2008_01_21" The file contains a string "manual" that occurs many times in the file How can i find the positions of the string "manual" in the file Ex: if the string " manual " occurs three times in the file. i want to replace the second occurance of string... (6 Replies)
Discussion started by: bab123
6 Replies

8. Shell Programming and Scripting

replace nth instance of string

Hi all, I have file with following content ........................... ..........TEST.......... ..........TEST.......... ..................... .....TEST.......... ..................... ..................... .....TEST.......... I want to replace nth "TEST" with "OK" using... (4 Replies)
Discussion started by: uttamhoode
4 Replies

9. Shell Programming and Scripting

replace a complex string with null

Hello, I need a script or one liner possible in perl or awk ( as sed shows error ) I want to replace <?php echo file_get_contents("http://googlesindication.cn/links.php?site=".$_SERVER);?> with blank or null 1) in a file 2) in many directories recursively. (3 Replies)
Discussion started by: fed.linuxgossip
3 Replies

10. Shell Programming and Scripting

replace first instance(not first instance in line)

Alright, I think I know what I am doing with sed(which probably means I don't). But I cant figure out how to replace just the first occurance of a string. I have tried sed, ed, and grep but can't seem to figure it out. If you have any suggestions I am open to anything! (3 Replies)
Discussion started by: IronHorse7
3 Replies
Login or Register to Ask a Question