我們需要一個shell腳本來檢索當前目錄中的所有txt文件,併爲每個文件檢查它是空文件還是包含任何數據它(我相信可以用wc命令完成)。用文件名替換unix文件最後一行的第一個字符
如果爲空,則忽略它別的,因爲在我們的條件,在這個目錄下的所有txt文件要麼是空或包含大量的數據,其中該文件的最後一行是這樣的:
Z|11|21||||||||||
即最後一行具有字符Z
然後|
然後an integer
然後|
然後an integer
然後某些數字|
符號。
如果文件不是空的,那麼我們只是假定它具有這種格式。最後一行之前的數據是亂碼,對我們來說不是必需的,但最後一行之前至少有一行,即如果文件非空,至少會有兩行保證。
我們需要一個代碼,其中如果文件非空,那麼它需要該文件,用'filename.txt'替換最後一行中的'Z',並將新數據寫入另一個文件tempfile中。最後一行將因此變爲:
filename.txt|11|21|||||||
該行的剩餘部分保持不變。從臨時文件中取出最後一行,即filename.txt|int|int|||||
併合併成最終文件。 tempfile的內容被清除,以接收來自同一目錄中的下一個filename.txt的數據。 finalfile具有該目錄中所有非空txt文件的最後一行的編輯版本。
如:FILE1.TXT有數據
....
....
....
Z|1|1|||||
和FILE2.TXT有數據
....
....
....
Z|2|34|||||
腳本運行之後,FILE1.TXT的新數據
.....
.....
.....
file1.txt|1|1||||||
這將寫入一個新的文件,說temp.txt最初是空的。從那裏最後一行被合併到一個文件final.txt中。所以,在final.txt的數據是:
file1.txt|1|1||||||
這個合併後,在TEMP.TXT數據被清除
FILE2.TXT的新數據
...
...
...
file2.txt|2|34||||||
這將被寫進相同的文件temp.txt。從那裏,最後一行被合併到同一個文件final.txt中。
所以,在final.txt數據是
file1.txt|1|1||||||
file2.txt|2|34||||||
考慮返回是類型TXT和非空的,並在同一目錄中的文件,在最終數據的N個後。TXT成爲
file1.txt|1|1||||||
file2.txt|2|34||||||
file3.txt|8|3||||||
.......
.......
.......
fileN.txt|22|3|||||
對於一些條件,我已經知道了命令,像
對於文本類型的目錄查找文件,
find <directory> -type f -name "*.txt"
連續服用的最後一行,併合併成另一個文件
tail -1 file.txt>>destination.txt
這聽起來像是有人要求他們爲他們完成工作。如果是這樣,你將支付多少錢一個解決方案:)如果不是,下面的一些基本的bash代碼。 – 2011-12-15 07:51:58