使用标准unix工具在文件中间插入行

时间:2012-08-27 06:17:13

标签: linux macos unix sed

我可以使用sed从文件中抓取特定行。是否有一种简单的方法可以将此行或段落插入另一个文件中的特定行?

sed -n 1,10p >> foo将结果附加到foo,将其置于底部。是否有标准的unix工具可以插入特定的行?

3 个答案:

答案 0 :(得分:6)

也许您正在寻找sed的{​​{1}}命令?

r

sed '123r file.txt' main.txt 的第123行插入file.txt的内容,将所有内容打印到标准输出。

(如果您的main.txt具有sed选项,则可以直接修改-i;否则,不会修改其输入文件。)

答案 1 :(得分:3)

如果您要替换文件n中的foo行,可以使用

cp foo foo.tmp
head -n $((n-1)) foo.tmp > foo
echo "newline" >> foo
tail -n +$((n+1)) foo.tmp >> foo

因此,您使用n-1获取第一个head -n NR行,添加新行,然后从n+1tail -n +NR开始追加其余行。

答案 2 :(得分:0)

这可能适合你(GNU sed):

sed '123s|.*|sed '\''1,10!d'\'' insert.txt|e' main.txt