tail -n 1217060 input.sql > /disk2/mysql_dump/output.sql不寫入輸出文件。幾天後,這是否意味着它仍在尋找第n條線?
有沒有更高效的替代方案呢?
tail -n 1217060 input.sql > /disk2/mysql_dump/output.sql不寫入輸出文件。幾天後,這是否意味着它仍在尋找第n條線?
我無法想象還有什麼是在這個任何優於tail
你可以使用dd
dd if=input.sql of=output.sql skip=1217060 bs=1
應該工作。假設ascii編碼,否則偏移量可能是錯誤的。
更新:對不起,我只是明白,你想擁有該文件的最後1217060字節。那麼你必須自己計算偏移量。 du input.sql
應該給你文件的大小。該金額減去1217060應該給你想要使用的skip
偏移量。
在執行此操作之前無法將輸入文件拆分爲多個文件嗎?在某些情況下,即使拖尾也需要一段時間來處理文件。這link可能是你可以嘗試的東西。
真的需要更多的背景知道爲什麼你這樣做......但是可能你可以通過拖拽和追加文件的最後幾行來改善它,就像它是一個日誌並將新的東西附加到輸出文件。
tail -f source.sql >> target.sql
你能給出更多的細節嗎?你是否在使用cron與這個命令一起使用?你爲什麼要閱讀然後轉儲這麼多的數據?大多數數據庫都有一個轉儲命令...
我剛剛遇到了同樣的問題,當我想將大文件(6,666,206行)拆分爲大小基本相同的10個塊時(不包括第一行)。前9個文件,我用這樣的結構:
head -n 670001 rather_big_file.csv | tail -n 670000 > chunk_1.csv
head -n 1340001 rather_big_file.csv | tail -n 670000 > chunk_2.csv
(...)
head -n 6030001 rather_big_file.csv | tail -n 670000 > chunk_9.csv
他們每個人都花了幾秒鐘時間來處理。但對於10日的文件,我想
tail -n 636205 > chunk_10.csv
它沒有回來;就像原始問題中所描述的一樣。
但是,然後,我嘗試了與前九個文件,即我相同的構造。 e:
head -n 6666206 rather_big_file.csv | tail -n 636205 > chunk_10.csv
並在幾秒鐘後返回所需的文件。 我不知道爲什麼這個工作,但它解決了問題!
我想要最後的1217060行,而不是字節,該文件 – user121196 2012-03-21 20:35:03
對不起,那麼我建議嘗試Gangadhar指出的解決方案。 – devsnd 2012-03-22 08:52:05