使用sed将文件中的特定行追加到另一个文件的末尾

时间:2014-07-14 18:20:31

标签: linux bash sed

文件foo有

one 
two

文件栏有

two
three
four
five

我想将栏的2-3行追加到foo的末尾,以便foo看起来像

one 
two
three
four

我该怎么做?我知道插入是sed -n '2,3p' bar > foo,所以我尝试了sed -n '2,3p' bar >> foo但是没有用;我在ssh连接中做了所有事情,它挂起了

编辑:

这不是一个解决方案,但之前这是在另一个sed调用旁边的bash命令中运行。我将它移动到一个单独的命令,这是有效的。

2 个答案:

答案 0 :(得分:3)

假设您在第一次尝试时没有首次覆盖foo,那么您的第二次尝试对我来说是正确的。也就是说,从描述的初始状态开始,运行:

sed -n '2,3p' bar >>foo

应将bar的第2行和第3行附加到foo

一般情况下,在您知道自己完成之后立即退出sed通常是个好主意,例如,为以下行添加q命令: / p>

    sed -n '2,3p;4q' bar >>foo

现在,如果bar是1000万行,它仍会在第4行而不是10,000,000行退出。 (测试类似seq 1 10000000 | sed …的内容以查看差异。)当然,这对于文件中四行的示例并不重要。

答案 1 :(得分:1)

使用awk:

awk 'NR==2||NR==3' file2 >> file1