search for string and add the second line below


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting search for string and add the second line below
# 1  
Old 08-01-2012
search for string and add the second line below

Hi there, i have an /etc/hosts file that is organised in sections, like this

Code:
#
# Oracle Servers
#
1.1.1.1  boxa
2.2.2.2  boxb
9.9.9.9  boxj

#
# Prod Sybase Servers
#
6.6.6.6  boxt
4.4.4.4 boxz

I am just trying to write a line of code that will ill be able to pass the comment block name without the prepended hash and space (e.g. just ' Prod Sybase Servers') and it would add the new host entry at the top of the block under the last comment hash

Ive managed to put together a little awk line that will take a string to search in the first column ($1) and place the new entry directly below it,

Code:
 nawk -v entry="5.5.5.5 boxy" -v string='6.6.6.6' '{if ($1==string) {print $0"\n"entry} else {print $0}}' /etc/hosts

This code will place my new entry below the '6.6.6.6 boxt' entry (or any other string that I search in the first column). This would work fine if i always knew an IP address in the file to search for, but in reality, we would like to define the comment block to add to as this will always be consistent. The downside is that it will have a variable amount of columns


Whist having the issue of trying to define the columns that need searching, I also have the issue of getting it to appear underneath the single hash that will always be directly below the search string. (so I want it to appear on the line after the next line down)

so for example if i provided a search string of 'Prod Sybase Servers' and a new entry of '5.5.5.5 boxy' then i would want it to look like this (based on the above example file)


Code:
#
# Oracle Servers
#
1.1.1.1  boxa
2.2.2.2  boxb
9.9.9.9  boxj

#
# Prod Sybase Servers
#
5.5.5.5 boxy
6.6.6.6  boxt
4.4.4.4 boxz


Any help or advice on how i could tackle this one would be greatly appreciated
# 2  
Old 08-01-2012
Hi
Code:
awk -v srch="^# Prod Sybase" -v line="1.1.1.1 blah" '{ if (match($0,srch)) { print; getline; print; print line; } else print }' /etc/hosts

# 3  
Old 08-01-2012
Straight forward way would be..
Code:
awk -v ent='5.45.4.5' -v str='Prod Sybase Servers' -v nl='\n' '$0~str{c=$0;getline;print c nl $0 nl ent;next}1' inputfile

# 4  
Old 08-02-2012
thanks for your help guys Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Search for a string,delete the line and replace with new string in a file

Hi Everyone, I have a requirement in ksh where i have a set of files in a directory. I need to search each and every file if a particular string is present in the file, delete that line and replace that line with another string expression in the same file. I am very new to unix. Kindly help... (10 Replies)
Discussion started by: Pradhikshan
10 Replies

2. Shell Programming and Scripting

Search string within a file and list common words from the line having the search string

Hi, Need your help for this scripting issue I have. I am not really good at this, so seeking your help. I have a file looking similar to this: Hello, i am human and name=ABCD. How are you? Hello, i am human and name=PQRS. I am good. Hello, i am human and name=ABCD. Good bye. Hello, i... (12 Replies)
Discussion started by: royzlife
12 Replies

3. Shell Programming and Scripting

String search and print next all lines in one line until blank line

Dear all I want to search special string in file and then print next all line in one line until blank lines come. Help me plz for same. My input file and desire op file is as under. i/p file: A1/EXT "BSCABD1_21233G1" 757 130823 1157 RADIO X-CEIVER ADMINISTRATION BTS EXTERNAL FAULT ... (7 Replies)
Discussion started by: jaydeep_sadaria
7 Replies

4. Shell Programming and Scripting

Search a string in a text file and add another string at the end of line

Dear All I am having a text file which is having more than 200 lines. EX: 001010122 12000 BIB 12000 11200 1200003 001010122 2000 AND 12000 11200 1200003 001010122 12000 KVB 12000 11200 1200003 In the above file i want to search for string KVB... (5 Replies)
Discussion started by: suryanarayana
5 Replies

5. Shell Programming and Scripting

Search a string in a text file and add another string at the particular position of a line

I am having a text file which is having more than 200 lines. EX: 001010122 12000 BIB 12000 11200 1200003 001010122 2000 AND 12000 11200 1200003 001010122 12000 KVB 12000 11200 1200003 In the above file i want to search for string KVB and add/replace... (1 Reply)
Discussion started by: suryanarayana
1 Replies

6. Shell Programming and Scripting

Search several string and convert into a single line for each search string using awk command AIX?.

I need to search the file using strings "Request Type" , " Request Method" , "Response Type" and by using result set find the xml tags and convert into a single line?. below are the scenarios. Cat test Nov 10, 2012 5:17:53 AM INFO: Request Type Line 1.... (5 Replies)
Discussion started by: laknar
5 Replies

7. Shell Programming and Scripting

Search a string and to add another string after that in new line

Hi Guys I am facing a problem:wall: In searching a string in a file and to add another string(ie. passed through command line argument) just after this(searched) string in new line. Thanks (2 Replies)
Discussion started by: kushwaha
2 Replies

8. Shell Programming and Scripting

search a string in a particular column of file and return the line number of the line

Hi All, Can you please guide me to search a string in a particular column of file and return the line number of the line where it was found using awk. As an example : abc.txt 7000,john,2,1,0,1,6 7001,elen,2,2,0,1,7 7002,sami,2,3,0,1,6 7003,mike,1,4,0,2,1 8001,nike,1,5,0,1,8... (3 Replies)
Discussion started by: arunshankar.c
3 Replies

9. Shell Programming and Scripting

search string in a file and retrieve 10 lines including string line

Hi Guys, I am trying to write a perl script to search a string "Name" in the file "FILE" and also want to create a new file and push the searched string Name line along with 10 lines following the same. can anyone of you please let me know how to go about it ? (8 Replies)
Discussion started by: sukrish
8 Replies

10. Shell Programming and Scripting

Perl: Search for string on line then search and replace text

Hi All, I have a file that I need to be able to find a pattern match on a line, search that line for a text pattern, and replace that text. An example of 4 lines in my file is: 1. MatchText_randomNumberOfText moreData ReplaceMe moreData 2. MatchText_randomNumberOfText moreData moreData... (4 Replies)
Discussion started by: Crypto
4 Replies
Login or Register to Ask a Question