行我的问题是下面的一个变种:在文本文件替换行与其他文本文件
bash: replace an entire line in a text file
问题有一个与给定的字符串替换文件的第N行(替换线)。就我而言,我不能只输入替换行,但我必须从另一个文件中读取它。
例如:
textfile1:
my line
your line
his line
her line
textfile2:
our line
我想从textfile2行更换textfile1 2号线。
我想我可能只是读textfile2
while IFS= read SingleLine
等,然后使用$SingleLine
作为替代路线,但我失败了......根据我用引号的类型(请原谅我的无知。 ..)我结束了与文本$ SINGLELINE或SINGLELINE或刚刚收到错误消息替换有问题的行: - [
我相信你能帮助我!
编辑有关解决方案: 我去与小改内嵌解决方案
sed '2d;1r textfile2' textfile1 > newfile1
要更换的第N行,该解决方案将是(见的解释接受的解决方案评论)
sed 'Nd;Mr textfile2' textfile1 > newfile1
其中N为期望的行数并且M = N-1。
谢谢大家!
谢谢!但是......你能解释'2d; 1r'部分吗?特别是:如果我想更换第四条线? – ppapakon 2014-09-24 06:49:17
'2d'正在删除第2行,'1r file2'正在替换第1行结束后的file2内容。要替换第4行,请使用:'sed'4d; 3r file2'file1' – anubhava 2014-09-24 06:50:47
好!谢谢,这真的很快! :-)我用小小的改变'sed'2d; 1r textfile2'textfile1> newfile1'去换取内联解决方案来保存一个新文件而不破坏原来的文件。 – ppapakon 2014-09-24 06:59:41