簡體   English   中英

將修改后的內容復制到Linux中的新文件

[英]Copy modified content to new file in linux

我們如何在Linux中編寫Shell腳本,以從文件中復制新添加的內容並將其附加到另一個文件。

我有一個日志文件,其中將存儲錯誤,並且我應該檢索新的錯誤並將其存儲在數據庫表中。 我將在一定間隔內運行cron作業,以調用Shell腳本。

編輯:

樣本記錄

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將其復制到文件中,但之后將記錄更多錯誤,僅應記錄新添加的行。我該如何常規執行此操作。

請幫助! 提前致謝 !

最簡單的情況

您可以使用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

要定期檢查附加內容,您可以對保存在某處的文件的較早版本進行比較 ,然后使用sed僅獲得在此期間附加的那些行:

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

但是隨后,您還必須在cron作業中還要將早期版本存儲在其他位置。

如果您需要將一個文件與另一個文件追加(分類),請使用“ cat”命令:

cat file1.txt file2.txt > fileall.txt

但是,如果您需要修改文件的內容,建議您使用“ sed”或“ grep”(如果您需要的是過濾器)。

抱歉,您的說明有些松散,所以我不能給您更准確的答案。

順便說一句。 數據庫表? 你能解釋一下嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM