2012-02-28 77 views
1
File1 Contents: 

line1-file1  "1" 
line2-file1  "2" 
line3-file1  "3" 
line4-file1  "4" 

File2 Contents: 

line1-file2  "25" 
line2-file2  "24" 
Pointer-file2 "23" 
line4-file2  "22" 
line5-file2  "21" 

的perl /殼腳本的執行後,如何將文件的內容插入到另一個文件(如果正則表達式)在Perl /殼

File 2 content should become 

line1-file2  "25" 
line2-file2  "24" 
Pointer-file2 "23" 
line1-file1  "1" 
line2-file1  "2" 
line3-file1  "3" 
line4-file1  "4" 
line4-file2  "22" 
line5-file2  "21" 

即粘貼文件1的文件中的內容2之後,「指針」包含行。

感謝

+1

另請問在[Unix.SE](http://unix.stackexchange.com/q/32908/4667) – 2012-02-28 11:38:20

+0

也http://stackoverflow.com/questions/11243102/using-sed-to-insert-文件內容 – Necreaux 2016-05-10 18:50:50

+0

我投票結束這個問題作爲題外話,因爲它是一個crosspost。 – peterh 2017-11-15 02:42:24

回答

6

使用在sedr命令可將文本文件:

$ sed -i '/Pointer-file2/r file1' file2 

$ cat file2 
line1-file2  "25" 
line2-file2  "24" 
Pointer-file2 "23" 
line1-file1  "1" 
line2-file1  "2" 
line3-file1  "3" 
line4-file1  "4" 
line4-file2  "22" 
line5-file2  "21" 

使用r命令ed插入文本文件:

$ echo -e '/Pointer/-1r file1\n%w' | ed -s file2 

$ cat file2 
line1-file2  "25" 
line2-file2  "24" 
line1-file1  "1" 
line2-file1  "2" 
line3-file1  "3" 
line4-file1  "4" 
Pointer-file2 "23" 
line4-file2  "22" 
line5-file2  "21" 
+0

非常感謝kev和/ r命令。 – user1228191 2012-02-28 05:50:25

+0

先生,如果我們想要在包含 – user1228191 2012-02-28 06:04:02

+0

@ user1228191行的那個「指針」之前粘貼,那該怎麼辦?實際上,它是**'r' **,斜槓屬於**'/ pattern /'** – kev 2012-02-28 07:41:16

4

我想use Tie::File。大致上,

use Tie::File; 
tie my @a, 'Tie::File', 'File2' or die; 
tie my @b, 'Tie::File', 'File1' or die; 
for (0..$#a) { 
    if (/^Pointer-file2/) { 
    splice @a, $_, 0, @b; 
    last 
    } 
} 

它比sed的使用時間更長,但它也應該更容易看到你將如何改變這個稍有不同的任務。

+0

謝謝朱利安:)有幫助 – user1228191 2012-02-28 07:56:02

相關問題