如何从特定行

时间:2015-12-23 21:20:38

标签: linux bash unix sed

我有两个文件data.txtresults.txt,假设data.txt中有5行,我想复制所有这些行并将其粘贴到文件results.txt中,从行号 4

以下是一个示例:

Data.txt文件:

stack
ping
dns
ip
remote

Results.txt文件:

# here are some text
# please do not edit these lines
# blah blah..
this is the 4th line that data should go on.

我尝试了sed各种组合,但我无法让它发挥作用,我不确定它是否也适合这个目的。

sed -n '4p' /path/to/file/data.txt > /path/to/file/results.txt

以上代码仅复制第4行。这不是我想要实现的目标。如上所述,我需要复制data.txt中的所有行并将其粘贴到results.txt中,但必须从第4行开始,而不修改或覆盖前3行。

非常感谢任何帮助。

修改

  

我想覆盖从行号 4 开始的复制数据   文件 results.txt 。所以,我想离开前3行没有   使用复制的数据修改并覆盖文件的其余部分   来自data.txt档案。

4 个答案:

答案 0 :(得分:4)

这是一种适用于cron的方法。丢失数据或破坏文件的可能性更小:

# preserve first lines of results
head -3 results.txt > results.TMP

# append new data
cat data.txt >> results.TMP

# rename output file atomically in case of system crash
mv results.TMP results.txt

答案 1 :(得分:2)

您可以使用流程替换为cat提供一个可以读取的fifo:

cat <(head -3 result.txt) data.txt > result.txt

答案 2 :(得分:1)

head -n 3 /path/to/file/results.txt > /path/to/file/results.txt
cat /path/to/file/data.txt >> /path/to/file/results.txt

答案 3 :(得分:1)

如果你可以使用awk:

awk 'NR!=FNR || NR<4' Result.txt Data.txt