Search for a Keyword in file and replace another keyword or add at the end of line


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Search for a Keyword in file and replace another keyword or add at the end of line
# 1  
Old 04-28-2014
Search for a Keyword in file and replace another keyword or add at the end of line

Hi

I want to implement something like this:

if( keyword1 exists)
then
check if(keyword2 exists in the same line)
then replace keyword 2 with New_Keyword
else
Add New_Keyword at the end of line
end if


eg:

Check for Keyword JUNGLE and add/replace VALUES(TIGER,LION):
Here JUNGLE is Keyword1 and VALUES is Keyword2 and VALUES(TIGER,LION) is New_Keyword.

Lines in INPUT File
Code:
JUNGLE Hello WORLD VALUES(DEER,WOLF),
RIVER Hello WORLD,
JUNGLE Hello WORLD,

In Line 1, we can have any values inside ().
Expected OUTPUT File
Code:
JUNGLE Hello WORLD VALUES(TIGER,LION),
RIVER Hello WORLD,
JUNGLE Hello WORLD VALUES(TIGER,LION),

In Line 1, we over write the existing values.
In Line 3, we added values at the end.
In Line 2, no changes required and keyword JUNGLE is missing in the line.

Let me know if more clarity is required.

Last edited by bartus11; 04-28-2014 at 12:57 PM.. Reason: Please use [code][/code] tags instead of [icode].
# 2  
Old 04-28-2014
Code:
awk '$0 ~ /JUNGLE/ {if($0 ~ /VALUES/) {sub("VALUES.*", "VALUES(TIGER,LION)")} else {sub("$", "VALUES(TIGER,LION)") }}1' file

# 3  
Old 05-05-2014
Hi
When I am running the below code I m not getting the desired output.

Code:
awk '$0 ~ /$key1/ {if($0 ~ /COMPRESS/) {sub("COMPRESS.*",$key2)} else {sub("$",$key2) }}1' FILENAME.txt

However if I am hardcoding the variable values it is giving desired output.
Code:
 awk '$0 ~ /HELLO/ {if($0 ~ /COMPRESS/) {sub("COMPRESS.*",HI)} else {sub("$",HI) }}1' FILENAME.txt

Any way by which i can use variables here.
# 4  
Old 05-05-2014
shell and awk variable are altogether different. try something like

Code:
awk -v pattern=$key1 '$0 ~ pattern {if($0 ~ /COMPRES/ ..........


Here, pattern is an awk variable.
# 5  
Old 05-05-2014
tried this. still not working.
Code:
awk -v var1=$key1, -v var2=$key2 '$0 ~ /var1/ {if($0 ~ /COMPRESS/) {sub("COMPRESS.*",var2)} else {sub("$",var2) }}1' FILENAME.txt

# 6  
Old 05-05-2014
try removing '/' around var1
Code:
awk -v var1=$key1, -v var2=$key2 '$0 ~ var1 {if($0 ~ /COMPRESS/) {sub("COMPRESS.*",var2)} else {sub("$",var2) }}1' FILENAME.txt

# 7  
Old 05-05-2014
Code:
$ awk '$0 ~ search {(/\(.*)/)?gsub(/\(.*)/,"("replace")"): gsub(/\,$/," VALUES("replace")&")}1' search="JUNGLE" replace="TIGER,LION" file

JUNGLE Hello WORLD VALUES(TIGER,LION),
RIVER Hello WORLD,
JUNGLE Hello WORLD VALUES(TIGER,LION),

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to count start and end keyword in a line

Hello fellow awkers and seders: need to figure out a way to ensure a software deployment has completed by checking its trace file in which I can store the deployment results as follows: echo $testvar ===== Summary - Deploy Result - Start ===== ===== Summary - Deploy Result - End =====... (1 Reply)
Discussion started by: ux4me
1 Replies

2. Shell Programming and Scripting

Keyword search/replace for two text files?

What is the best way (bash/awk/sed?) to read in two text files and do a keyword search/replace? file1.txt: San Francisco Los Angeles Seattle Dallas file2.txt: I love Los Angeles. Coming to Dallas was the right choice. San Francisco is fun. Go to Seattle in the summer. ... (3 Replies)
Discussion started by: pxalpine
3 Replies

3. Solaris

Keyword search input from a file

Hi, I have a file which got only one column and got some keywords. I have another file where the keywords used in the first file are repeated in the second file. Now I would like to know how many times each keyword from the first file is repeated in the second file. Request your help on... (1 Reply)
Discussion started by: pointers
1 Replies

4. Shell Programming and Scripting

How can i use sed to replace a keyword in an xml file?

Hello Unix gurus! I'm a unix newbie. Can I use sed to replace a keyword in an xml file and convert this keyword with an output of a unix cat command? for example: <test>keyword</test> and temp.txt = hello! I would like to replace "keyword" with the output of "cat temp.txt". I think... (6 Replies)
Discussion started by: 4dirk1
6 Replies

5. Shell Programming and Scripting

find keyword from file and search in another file

hi dudes; this is my file.txt:20101228-180436_Down a 1 b 2 ... 20101228-190436_Rollback a 1 40 e 3 20 ... 20101228-180436_Down c 2 f 2 c 1 ... and i have a down.txt:a 1 aa 2 30 bb 1 40 b 2 ab 3 10 c 3 cd 4 50 ac 2 20 c 3 ad 1 0 (2 Replies)
Discussion started by: gc_sw
2 Replies

6. Shell Programming and Scripting

search for keyword in subsequent lines and delete the second line

I have my data something like this I need to search for the keyword yyyy in the susequent lines and if it is present, delete the second line with keyword. In other words, if a keywords is found in two subsequent lines delete the second line. input data: aaaa bbbbb cccc dddd xxxx... (4 Replies)
Discussion started by: rdhanek
4 Replies

7. Shell Programming and Scripting

Replace only if the keyword is the first word in every line

How do I replace only if the keyword is at the begining of a line? Code: -- a = “This is a print statement” print a -- What if I want to replace print by #print only in the second line i.e only if the line starts with that keyword. Please help me out. I'm new to SED. -----Post... (5 Replies)
Discussion started by: alexzubin
5 Replies

8. Shell Programming and Scripting

multiple search keyword in grep

Dear All, I have a file containing info like TID:0903 asdfasldjflsdjf TID:0945 hjhjhkhkhkh TID:2045 hjhjhkhkhkh TID:1945 hjhjhkhkhkh TID:2045 hjhjhkhkhkh I need to show only lines containing TID:0903 asdfasldjflsdjf TID:0945 hjhjhkhkhkh TID:2045 hjhjhkhkhkh TID:2045 hjhjhkhkhkh ... (11 Replies)
Discussion started by: saifurshaon
11 Replies

9. Shell Programming and Scripting

how to search reports with specified keyword in log

Hi, I have a question with sed/awk. When I handle some log files I want to search all reports with specified keyword. For example, in the log below. abcd efg ===start abc e ===end xyz ===start af f ===end nf ga ===start ab ===end (4 Replies)
Discussion started by: danielnpu
4 Replies

10. Shell Programming and Scripting

how to search a keyword within a file using a for loop

hi guys i have a problem here, im trying to stablish a relationship between a text file and an input user for example the script is going to prompt the user for some football team and what the script is going to do is return the colums in which that input is located so far this is what i have ... (6 Replies)
Discussion started by: lucho_1
6 Replies
Login or Register to Ask a Question