Awk: search and replace


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Awk: search and replace
# 1  
Old 06-27-2013
Awk: search and replace

I have a file which requires modification via a shell script.

Need to do the following: 0. take input from user for new text. 1. search for a keyword in the file. 2. going forward, search for another keyword. 3. Replace this line with user supplied input.

for e.g., my file has the following text:

Code:
(some text)
(some text)
(text1_to_search)
(some text)
(text2_to_search_and_replace)
(some text)
(some text)

I need to search the file for a keyword and rewrite the file replace the matching the next search line with the input to this script leaving the remaining content untouched.

Regards

Last edited by jim mcnamara; 06-27-2013 at 10:50 AM..
# 2  
Old 06-27-2013
I think sed will be a good choice for what you want to do.

Are you wanting the script to ask for user input, and then change based on that?

I can help you with a script that does that.
# 3  
Old 06-27-2013
Yes.

Actually i am doing 2 changes in a single file.

Code:
awk '$0 ~ /\"Search_string\"/ {print; getline; print replacement1; next} {print} ' replacement1="sometext" origFile > tmpfile1

awk '/search_string2/,/Search_String3/ {if ($0 ~ /Search_String3/){print replacement2; next}}; {print}' replacement2="sometext" tmpfile1 > tmpfile2

mv tmpfile2 origFile

Can i club these to happen in one go? Dont like the idea of creating multiple intermediate file.

Last edited by Scrutinizer; 06-27-2013 at 04:55 PM.. Reason: code tags
# 4  
Old 06-27-2013
I would actually suggest using see for this script. You can do inline editing. That means that you will replace files within the file and you won't have to create temp files and move them back to original.

I am in the middle of a meeting. I will respond with a sample script soon.
# 5  
Old 06-27-2013
Try this

Code:
awk -v ip1="$INPUT1" -v ip2="$INPUT2" '{gsub( /String1/, ip1);gsub( /String2/, ip2);print}' file

regards,
kumar
# 6  
Old 06-27-2013
Try this (may not work on ALL awk implementations):
Code:
awk '/text1.*search/{L=1} /text2.*search/ && L {getline < "-"; L=0}1' file

# 7  
Old 06-28-2013
@brianjb

Please provide that sample script you were talking about.

Regards
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search replace with awk using 2 files

I have a bit of a complex problem that I would like to solve with awk. It is essentially a 2-part problem. I have a large directory of files with the same format, each with 266 lines. The first 206 lines of each file are filled with attribute information. Then the following 60 lines consist... (4 Replies)
Discussion started by: owwow14
4 Replies

2. Shell Programming and Scripting

Search and replace with awk

Hi Shell Tigers, I am trying to acheive search and replace strings within a setup file. Help much appreciated. test.setup ORACLE_HOME=/oracle/product/11.0.0/home01 PATH1=/perm_loc/3222/FTP/cfg1 PATH2=/perm_loc/3222/FTP/cfg2/bin PATH3=/perm_loc/3222/FTP/cfg3/bin So... (3 Replies)
Discussion started by: jville
3 Replies

3. Shell Programming and Scripting

awk/sed string search and replace

Need help with either sed or awk to acheive the following file1 ----- In the amazon forest The bats eat all the time... mon tue wed they would eat berries In the tropical forest The bats eat all the time... on wed bats eat nuts In the rain forest The bats eat all the time... on... (2 Replies)
Discussion started by: jville
2 Replies

4. Shell Programming and Scripting

Exact Search and Replace using AWK

Hello. I have written the following script to search and replace from one file into another. #awk script to search and replace from file a in file b NR == FNR { A=$2; next } { for( a in A ) sub(a, A)}1 file2 file1 While the function works pretty well, I want a. The word in File 2 to... (8 Replies)
Discussion started by: gimley
8 Replies

5. Shell Programming and Scripting

awk search and replace field

I am writing a c++ program that has many calls of pow(input,2). I now realize that this is slowing down the program and these all should be input * input for greater speed. There should be a simple way of doing this replacement throughout my file with awk, but I am not very familiar with awk.... (2 Replies)
Discussion started by: bluejayek
2 Replies

6. Shell Programming and Scripting

search and replace with AWK

Suchen und Ersetzen mit AWK hello, i'm not good in scripting and asking for your help. With this script i change some text parts in diffent datafiles. It works without problems, but i need to get some informations about what changes in wich datafiles happend. This could be in character of a... (3 Replies)
Discussion started by: ruffi
3 Replies

7. Shell Programming and Scripting

Search and Replace using awk

Hi, I am really confused with this problem that I am facing . I have a file that contains entries in the form : option1 Value1 option2 Value2 option3 Value3 option4 Value4 . . . I want to search for the keyword "option4" and replace "value4" by another value, say "value5". My main... (2 Replies)
Discussion started by: harry0812
2 Replies

8. Shell Programming and Scripting

awk - replace number of string length from search and replace for a serialized array

Hello, I really would appreciate some help with a bash script for some string manipulation on an SQL dump: I'd like to be able to rename "sites/WHATEVER/files" to "sites/SOMETHINGELSE/files" within the sql dump. This is quite easy with sed: sed -e... (1 Reply)
Discussion started by: otrotipo
1 Replies

9. Shell Programming and Scripting

Search and replace using awk

Dear All, I want to search and replace the text in file using awk. but facing hard luck in that. Please help me out!!!! > grep Abc.De.ync.rate /tmp/sdosanjh.txt Abc.De.ync.rate 6 write Now, I want to replace the "6" with value say "2". I... (5 Replies)
Discussion started by: sdosanjh
5 Replies

10. Shell Programming and Scripting

search and replace using awk with variables

Hi, I have been trying to use awk with variables that needs to search for a pattern and replace it with another pattern, the patterns are supplied in a variable. I have tried several different ways without success and hope that someone can help me. Here are the details echo $UPC 07007457809... (2 Replies)
Discussion started by: jerardfjay
2 Replies
Login or Register to Ask a Question

Featured Tech Videos