将修改后的内容复制到linux中的新文件中

时间:2014-05-30 08:20:52

标签: linux shell scripting

我们如何在linux中编写shell脚本来从文件中复制新添加的内容并将其附加到另一个文件中。

我有一个日志文件,其中存储错误,我应该检索新错误并将其存储在数据库表中。我将在一定的时间间隔内运行一个调用shell脚本的cron作业。

编辑:

示例日志

140530 13:48:57 [ERROR] Event Scheduler: [root@%][test.event] Table 'test.test_event' doesn't exist
140530 13:48:57 [Note] Event Scheduler: [root@%].[test.event] event execution failed.
140530 13:49:57 [ERROR] Event Scheduler: [root@%][test.event] Table 'test.test_event' doesn't exist
140530 13:49:57 [Note] Event Scheduler: [root@%].[test.event] event execution failed.

最初我使用 cat 将其复制到一个文件中,但稍后会记录更多错误,只记录新添加的行。我可以在常规基础上执行此操作。

请帮忙!提前谢谢!

2 个答案:

答案 0 :(得分:2)

最简单的情况

您可以使用tail -f继续追踪文件中的数据,然后使用>>(附加重定向)将其附加到第二个文件。

tail -f file1.txt >> file2.txt

将"观看" file1.txt并将新内容附加到file2.txt

要测试它是否有效,请打开另一个终端并执行:

echo "Hello!" >> file1.txt

你应该看到"你好!"出现在file2.txt

请注意这仅在file1.txt上的基础I / O操作是实际附加内容时才有效。如果您在文本编辑器中打开file1.txt并更改其内容,则赢得工作。它也不能作为一个cron工作,因为它需要不断运行。

使用cron

要定期检查附加内容,您可以对保存在某处的文件的早期版本执行diff,然后使用sed仅获取在此期间附加的那些行:

diff file1_old.txt file1_current.txt | \
sed -r -e '/^[^>]/ d' -e 's/^> //' >> file2.txt

但是你必须在你的cron工作中处理早期版本等等。

答案 1 :(得分:1)

如果您需要将一个文件追加(连接)另一个文件,请使用“cat”命令:

cat file1.txt file2.txt > fileall.txt

但是如果你需要修改文件的内容,我建议你使用“sed”或“grep”,如果你需要的是过滤器。

抱歉,您的规格有点松散,所以我无法给您更准确的答案。

顺便说一句。数据库表?你能解释一下吗?