Insert content of a file into another file before given pattern


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Insert content of a file into another file before given pattern
# 1  
Old 05-02-2015
Insert content of a file into another file before given pattern

I need to insert file x2 into x1 right before first BBB line.
Code:
$ cat x1
AAA     1
AAA     2
AAA     3
BBB     1
BBB     2
BBB     3
$ cat x2
XXX - insert 1
XXX - insert 2

I need to get
Code:
AAA     1
AAA     2
AAA     3
XXX - insert 1
XXX - insert 2
BBB     1
BBB     2
BBB     3

I tried
a)
Code:
$ sed -n '1,/^BBB/p' x1; cat x2; sed -n '/^BBB/,$p' x1
AAA     1
AAA     2
AAA     3
BBB     1
XXX - insert 1
XXX - insert 2
BBB     1
BBB     2
BBB     3

and
b)
Code:
$ sed -e '/^BBB/r x2' x1                                     
AAA     1
AAA     2
AAA     3
BBB     1
XXX - insert 1
XXX - insert 2
BBB     2
XXX - insert 1
XXX - insert 2
BBB     3
XXX - insert 1
XXX - insert 2

Both have problems, (a) inserts after BBB and it duplicates the BBB line, the (b) repeatedly inserts the content and does it again after.

Any ideas?
# 2  
Old 05-02-2015
I usually find ed better suited for things like this than sed. Try:
Code:
#!/bin/ksh
ed -s x1 <<-EOF
	H
	/BBB/-1r x2
	w somefile
	q
EOF

The ed H command will give you a semi-useful diagnostic if the pattern you're looking for is not present in the input file.

This will save the updated contents in a file name somefile. If you want to update x1 instead of creating a new file; change:
Code:
	w somefile

to just:
Code:
	w

If you want the update written to standard output instead of to a file, change the lines:
Code:
	w somefile
	q

to:
Code:
	,p
	Q

This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 05-03-2015
With awk:
Code:
awk '!p && /^BBB/{while((getline ins<f)>0) print ins; p=1}1' f=x2 x1

or simply
Code:
awk '/^BBB/{while((getline p<f)>0) print p}1' f=x2 x1

which should also work since additional reads after will fail after the insert file will have been read, but not closed at the first occurrence of ^BBB

Last edited by Scrutinizer; 05-03-2015 at 05:51 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Insert content from file 1 to file 2 in specific criteria meet

Hi , I'm looking for some code that can copy and paste form file1 to file2 with 2 criterial meet. file1: test "sp-j1" test "sp-j2" test "sp-j3" test "sp-j4" file2: sub Pre_Shorts1 (Status_Code, Message$) global Status !if Message$ <> "" then print... (3 Replies)
Discussion started by: kttan
3 Replies

2. Shell Programming and Scripting

Insert content of a file right after pattern in another file

suppose i have original file: original.txt: hello how are you you are wonderful what time is it I went to the store last night. and some apple juice then i have another file: anotherfile.txt: with my friends mary, john and harry. We had a great time. We bought food Suppose... (1 Reply)
Discussion started by: SkySmart
1 Replies

3. Shell Programming and Scripting

Insert content of file before the first occurrence of a line starts with a pattern in another file

Hi all, I'm new to scripting.. facing some problems while inserting content of a file into another file... I want to insert content of a file (file2) into file1, before first occurrence of "line starts with pattern" in file1 file1 ====== working on linux its unix world working on... (14 Replies)
Discussion started by: Jagadeesh Kumar
14 Replies

4. Shell Programming and Scripting

Insert content of a file to another file at a line number which is given by third file

Hi friends, here is my problem. I have three files like this.. cat file1.txt ======= unix is best unix is best linux is best unix is best linux is best linux is best unix is best unix is best cat file2.txt ======== Windows performs better Mac OS performs better Windows... (4 Replies)
Discussion started by: Jagadeesh Kumar
4 Replies

5. UNIX for Dummies Questions & Answers

How to append portion of a file content to another file when a certain pattern is matching?

Hi ladies and gentleman.. I have two text file with me. I need to replace one of the file content to another file if one both files have a matching pattern. Example: text1.txt: ABCD 1234567,HELLO_WORLDA,HELLO_WORLDB DCBA 3456789,HELLO_WORLDE,HELLO_WORLDF text2.txt: XXXX,ABCD... (25 Replies)
Discussion started by: bananamen
25 Replies

6. Shell Programming and Scripting

Want to Insert few lines which are stored in some file before a pattern in another file

Hello, I have few lines to be inserted in file_lines_to_insert. In another file final_file, I have to add lines from above file file_lines_to_insert before a particular pattern. e.g. $ cat file_lines_to_insert => contents are abc def lkj In another file final_file, before a... (6 Replies)
Discussion started by: nehashine
6 Replies

7. Shell Programming and Scripting

Insert content of a file after a certain line in another file

Hi, it's my first post to this forum. I just started bash and I'm stuck at one issue. I want to include content of a file in another file after a certain line. I'm using sed for inserting one line but how to insert all content of a file ? For example i have a file list.txt with a few lines and... (4 Replies)
Discussion started by: ktm
4 Replies

8. Shell Programming and Scripting

extract content from a file and insert to another file

please help for the following task... I have to extract the mac address & IP address from the file1: ... 0100004512EEF4 03 192.168.0.7 192.168.0.1 -1 ... 0100779hF5D212 03 192.168.0.8 192.168.0.1 -1 ... 0100789lF5D212 03 192.168.0.9 192.168.0.1 -1 ... ... change the format (addidng... (15 Replies)
Discussion started by: fredao
15 Replies

9. Shell Programming and Scripting

Insert file content via sed after two searchings

Hi folks, The file webcache.xml contains a lot sections which begins and ends with the string </CACHEABILITYRULE>. The section In need to deel with is: </CACHEABILITYRULE> <CACHEABILITYRULE NAME="cache swf" CACHE="YES" COMMENT="This rule caches all .swf files. This... (2 Replies)
Discussion started by: nir_s
2 Replies
Login or Register to Ask a Question