|
Search Forums:
|
|||||||
| Forums | Register | Forum Rules | Linux and Unix Links | Man Pages | Albums | FAQ | Users | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
|
|
|
Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
[bash help]Adding multiple lines of text into a specific spot into a text file
I am attempting to insert multiple lines of text into a specific place in a text file based on the lines above or below it. For example, Here is a portion of a zone file. Code:
IN NS ns1.domain.tld.
IN NS ns2.domain.tld.
IN NS ns3.domain.tld.
IN NS ns4.domain.tld.
IN A 255.255.255.255I need to add 4 lines of MX records in between the final NS record and the first A record, and still leave 1 line of white space between each, so that it looks like this: Code:
IN NS ns1.domain.tld.
IN NS ns2.domain.tld.
IN NS ns3.domain.tld.
IN NS ns4.domain.tld.
IN MX mx1.domain.tld.
IN MX mx2.domain.tld.
IN MX mx3.domain.tld.
IN MX mx4.domain.tld.
IN A 255.255.255.255I've checked the other posts which have to do with inserting text into a file, and it seems like this can be done with some iteration of sed, but I'm not sure where to begin. the other examples of this kind of situation on this forum seemed to be dealing mostly with specific line numbers, or a static value to insert the line after. Where in this situation, the final NS record will change, and the amount of NS lines will change from zone file to zone file, so the only static value is the IN NS. any help anyone can offer with this is greatly appriciated. |
| Sponsored Links | |
|
|
|
#2
|
||||
|
||||
|
Try: input: Code:
cat file1
IN NS ns1.domain.tld.
IN NS ns2.domain.tld.
IN NS ns3.domain.tld.
IN NS ns4.domain.tld.
IN A 255.255.255.255
cat file2
IN MX mx1.domain.tld.
IN MX mx2.domain.tld.
IN MX mx3.domain.tld.
IN MX mx4.domain.tld.Code: Code:
awk '{ if(/A.+[0-9]+/) {_s=$0;next;} print;}END { print "\n" _s; }' file1 file2
IN NS ns1.domain.tld.
IN NS ns2.domain.tld.
IN NS ns3.domain.tld.
IN NS ns4.domain.tld.
IN MX mx1.domain.tld.
IN MX mx2.domain.tld.
IN MX mx3.domain.tld.
IN MX mx4.domain.tld.
IN A 255.255.255.255 |
| Sponsored Links | ||
|
|
|
#3
|
||||
|
||||
|
You can have the text to be insert in a file.Here I had the main file as "file1" and had the text in the file "file2". file1: Code:
IN NS ns1.domain.tld.
IN NS ns2.domain.tld.
IN NS ns3.domain.tld.
IN NS ns4.domain.tld.
IN A 255.255.255.255file2: Code:
IN MX mx1.domain.tld.
IN MX mx2.domain.tld.
IN MX mx3.domain.tld.
IN MX mx4.domain.tld.Code:
str=""
while read line
do
str="$str$line\n"
done < "file2"
while read line
do
match=`sed -r "s/(^ *IN +A.+$)/$str\n\1\n/g" <<<"$line"`
echo -e "$match" >>resultfile
done < "file1"Here the result will store on the file resultfile |
| Sponsored Links | ||
|
|
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Adding text to file on certain lines with(special characters) | A4ron4perl | Shell Programming and Scripting | 13 | 12-16-2009 10:12 PM |
| extract the lines between specific line number from a text file | return_user | Shell Programming and Scripting | 1 | 07-18-2009 09:11 PM |
| Adding specific text and spaces to each line in a text file | hertingm | Shell Programming and Scripting | 4 | 08-25-2008 02:34 PM |
| adding text to a file between lines | bishweshwar | Shell Programming and Scripting | 7 | 10-10-2006 01:03 PM |
| Delete specific lines in a text file | dniz | Programming | 9 | 08-08-2005 08:30 AM |
|
|