本篇內(nèi)容介紹了“在Linux中怎么分割和重組文件”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)公司是一家集成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站頁(yè)面設(shè)計(jì)、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專(zhuān)業(yè)的建站公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計(jì)最適合用戶的網(wǎng)站頁(yè)面。 合作只是第一步,服務(wù)才是根本,我們始終堅(jiān)持講誠(chéng)信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場(chǎng)環(huán)境中,互促共生。
使用 csplit 分割文件
csplit 是這些有趣的小命令中的一個(gè),它永遠(yuǎn)伴你左右,一旦開(kāi)始用它就離不開(kāi)了。csplit 將單個(gè)文件分割成多個(gè)文件。這個(gè)示例演示了最簡(jiǎn)單的使用方法,它將文件 foo.txt 分為三個(gè)文件,以行號(hào) 17 和 33 作為分割點(diǎn):
$ csplit foo.txt 17 33 2591 3889 2359
csplit 在當(dāng)前目錄下創(chuàng)建了三個(gè)新文件,并以字節(jié)為單位打印出新文件的大小。默認(rèn)情況下,每個(gè)新文件名為 xx_nn:
$ ls xx00 xx01 xx02
您可以使用 head 命令查看每個(gè)新文件的前十行:
$ head xx* ==> xx00 <== Foo File by Carla Schroder Foo text Foo subheading More foo text ==> xx01 <== Foo text Foo subheading More foo text ==> xx02 <== Foo text Foo subheading More foo text
如果要將文件分割成包含相同行數(shù)的多個(gè)文件怎么辦?可以指定行數(shù),然后將重復(fù)次數(shù)放在在花括號(hào)中。此示例重復(fù)分割 4 次,并將剩下的轉(zhuǎn)儲(chǔ)到***一個(gè)文件中:
$ csplit foo.txt 5 {4} 57 1488 249 1866 3798
您可以使用星號(hào)通配符來(lái)告訴 csplit 盡可能多地重復(fù)分割。這聽(tīng)起來(lái)很酷,但是如果文件不能等分,則可能會(huì)失敗(LCTT 譯注:低版本的 csplit 不支持此參數(shù)):
$ csplit foo.txt 10 {*} 1545 2115 1848 1901 csplit: '10': line number out of range on repetition 4 1430
默認(rèn)的行為是刪除發(fā)生錯(cuò)誤時(shí)的輸出文件。你可以用 -k 選項(xiàng)來(lái)解決這個(gè)問(wèn)題,當(dāng)有錯(cuò)誤時(shí),它就不會(huì)刪除輸出文件。另一個(gè)行為是每次運(yùn)行 csplit 時(shí),它將覆蓋之前創(chuàng)建的文件,所以你需要使用新的文件名來(lái)分別保存它們。使用 --prefix= _prefix_ 來(lái)設(shè)置一個(gè)不同的文件前綴:
$ csplit -k --prefix=mine foo.txt 5 {*} 57 1488 249 1866 993 csplit: '5': line number out of range on repetition 9 437 $ ls mine00 mine01 mine02 mine03 mine04 mine05
選項(xiàng) -n 可用于改變對(duì)文件進(jìn)行編號(hào)的數(shù)字位數(shù)(默認(rèn)是 2 位):
$ csplit -n 3 --prefix=mine foo.txt 5 {4} 57 1488 249 1866 1381 3798 $ ls mine000 mine001 mine002 mine003 mine004 mine005
csplit 中的 “c” 是上下文(context)的意思。這意味著你可以根據(jù)任意匹配的方式或者巧妙的正則表達(dá)式來(lái)分割文件。下面的例子將文件分為兩部分。***個(gè)文件在包含***次出現(xiàn) “fie” 的前一行處結(jié)束,第二個(gè)文件則以包含 “fie” 的行開(kāi)頭。
$ csplit foo.txt /fie/
在每次出現(xiàn) “fie” 時(shí)分割文件:
$ csplit foo.txt /fie/ {*}
在 “fie” 前五次出現(xiàn)的地方分割文件:
$ csplit foo.txt /fie/ {5}
僅當(dāng)內(nèi)容以包含 “fie” 的行開(kāi)始時(shí)才復(fù)制,并且省略前面的所有內(nèi)容:
$ csplit myfile %fie%
將文件分割成不同大小
split 與 csplit 類(lèi)似。它將文件分割成特定的大小,當(dāng)您將大文件分割成小的多媒體文件或者使用網(wǎng)絡(luò)傳送時(shí),這就非常棒了。默認(rèn)的大小為 1000 行:
$ split foo.mv $ ls -hl 266K Aug 21 16:58 xaa 267K Aug 21 16:58 xab 315K Aug 21 16:58 xac [...]
它們分割出來(lái)的大小相似,但你可以指定任何你想要的大小。這個(gè)例子中是 20M 字節(jié):
$ split -b 20M foo.mv
尺寸單位縮寫(xiě)為 K,M,G,T,P,E,Z,Y(1024 的冪)或者 KB,MB,GB 等等(1000 的冪)。
為文件名選擇你自己的前綴和后綴:
$ split -a 3 --numeric-suffixes=9 --additional-suffix=mine foo.mv SB 240K Aug 21 17:44 SB009mine 214K Aug 21 17:44 SB010mine 220K Aug 21 17:44 SB011mine
-a 選項(xiàng)控制編號(hào)的數(shù)字位置。--numeric-suffixes 設(shè)置編號(hào)的開(kāi)始值。默認(rèn)前綴為 x,你也可以通過(guò)在文件名后輸入它來(lái)設(shè)置一個(gè)不同的前綴。
將分割后的文件合并
你可能想在某個(gè)時(shí)候重組你的文件。常用的 cat 命令就用在這里:
$ cat SB0* > foo2.txt
示例中的星號(hào)通配符將匹配到所有以 SB0 開(kāi)頭的文件,這可能不會(huì)得到您想要的結(jié)果。您可以使用問(wèn)號(hào)通配符進(jìn)行更精確的匹配,每個(gè)字符使用一個(gè)問(wèn)號(hào):
$ cat SB0?????? > foo2.txt
“在Linux中怎么分割和重組文件”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!