真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux命令分割 linux命令分隔符

Linux里面分割,切片是什么?

在Linux最常用的文件生成和切片工具是dd,它功能比較全面,但無法以行為單位提取文件數(shù)據(jù),也無法直接將文件按大小或行數(shù)進行均分(除非借助循環(huán))。另兩款數(shù)據(jù)分割工具split和csplit能夠比較輕松地實現(xiàn)這些需求。csplit是split的升級版。

創(chuàng)新互聯(lián)建站是一家專業(yè)提供烏拉特前企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站建設、成都網(wǎng)站制作、HTML5建站、小程序制作等業(yè)務。10年已為烏拉特前眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡公司優(yōu)惠進行中。

1.1 dd命令

從if指定的文件讀取數(shù)據(jù),寫入到of指定的文件。使用bs指定讀取和寫入的塊大小,使用count指定讀取和寫入的數(shù)據(jù)塊數(shù)量,bs和count相乘就是文件總大小??梢灾付╯kip忽略讀取if指定文件的前多少個塊,seek指定寫入到of指定文件時忽略前多少個塊。

dd if=/dev/zero of=/tmp/abc.1 bs=1M count=20

if是input file,of是output file;bs有c(1byte)、w(2bytes)、b(512bytes)、kB(1000bytes)、K(1024bytes)、MB(1000)、M(1024)和GB、G等幾種單位。因此,不要隨意在單位后加上字母B。

假設現(xiàn)有文件CentOS.iso的大小1.3G,需要將其切分后還原,切分的第一個小文件大小為500M。

dd if=/tmp/CentOS.iso of=/tmp/CentOS1.iso bs=2M count=250

生成第二個小文件,由于第二個小文件不知道具體大小,所以不指定count選項。由于第二個小文件要從第500M處開始切分,于是需要忽略CentOS.iso的前500M。假設bs=2M,于是skip掉的數(shù)據(jù)塊數(shù)量為250。

dd if=/tmp/CentOS.iso of=/tmp/CentOS2.iso bs=2M skip=250

現(xiàn)在CentOS.iso=CentOS1.iso+CentOS2.iso。可以將CentOS[1-2].iso還原。

cat CentOS1.iso CentOS2.iso CentOS_m.iso

比較CentOS_m.iso和CentOS.iso的md5值,它們是完全一樣的。

shell md5sum CentOS_m.iso CentOS.iso

504dbef14aed9b5990461f85d9fdc667 CentOS_m.iso

504dbef14aed9b5990461f85d9fdc667 CentOS.iso

那么seek選項呢?和skip有什么區(qū)別?skip選項是忽略讀取時的前N個數(shù)據(jù)塊,而seek是忽略寫入文件的前N個數(shù)據(jù)塊。假如要寫入的文件為a.log,則seek=2時,將從a.log的第3個數(shù)據(jù)塊開始追加數(shù)據(jù),如果a.log文件本身大小就不足2個數(shù)據(jù)塊,則缺少的部分自動使用/dev/zero填充。

于是,在有了CentOS1.iso的基礎上,要將其還原為和CentOS.iso相同的文件,可以使用下面的方法:

dd if=/tmp/CentOS.iso of=/tmp/CentOS1.iso bs=2M skip=250 seek=250

還原后,它們的md5值也是相同的。

shellmd5sum CentOS1.iso CentOS.iso

504dbef14aed9b5990461f85d9fdc667 CentOS1.iso

504dbef14aed9b5990461f85d9fdc667 CentOS.iso

1.2 split命令

split工具的功能是將文件切分為多個小文件。既然要生成多個小文件,必然要指定切分文件的單位,支持按行切分以及按文件大小切分,另外還需解決小文件命名的問題。例如,文件名前綴、后綴。如果未明確指定前綴,則默認的前綴為"x"。

以下是命令的語法說明:

例如,將/etc/fstab按行切分,每5行切分一次,并指定小文件的前綴為"fs_",后綴為數(shù)值后綴,且后綴長度為2。

[root@linuxidc ~]# split -l 5 -d -a 2 /etc/fstab fs_

[root@linuxidc~]# lsfs_00 fs_01 fs_02

查看任一小文件。

[root@linuxidc ~]# catfs_01

# Accessible filesystems, by reference, are maintained under'/dev/disk'# Seeman pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#

UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 / xfs defaults 0 0UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot xfs defaults 0 0

可以將這些切分后的小文件重新組裝還原。例如,將上面的三個小文件還原為~/fstab.bak。

[root@linuxidc ~]# cat fs_0[0-2] ~/fstab.bak

還原后,它們的內(nèi)容是完全一致的??梢允褂胢d5sum比較。

[root@linuxidc ~]# md5sum /etc/fstab ~/fstab.bak

29b94c500f484040a675cb4ef81c87bf/etc/fstab

29b94c500f484040a675cb4ef81c87bf/root/fstab.bak

還可以將標準輸入的數(shù)據(jù)進行切分,并分別寫入到小文件中。例如:

[root@linuxidc ~]# seq 1 2 15 | split -l 3 -d -new_

[root@linuxidc~]# ls new*new_00 new_01 new_02

可以為每個小文件追加額外的后綴。有些老版本的split不支持該選項,而是在csplit上支持的,但是新版本的split已經(jīng)支持。例如,加上".log"。

[root@linuxidc ~]# seq 1 2 20 | split -l 3 -d -a 3 --additional-suffix=".log" -new1_

[root@linuxidc~]# ls new1*new1_000.log new1_001.log new1_002.log new1_003.log

1.3 csplit命令

split只能按行或按照大小進行切分,無法按段落切分。csplit是split的變體,功能更多,它主要是按指定上下文按段落分割文件。

csplit [OPTION]... FILE PATTERN...

描述:按照PATTERN將文件切分為"xx00","xx01", ...,并在標準輸出中輸出每個小文件的字節(jié)數(shù)。

選項說明:-b FORMAT:指定文件后綴格式,格式為printf的格式,默認為%02d。表示后綴以2位數(shù)值,且不足處以0填充。-f PREFIX:指定前綴,不指定是默認為"xx"。-k:用于突發(fā)情況。表示即使發(fā)生了錯誤,也不刪除已經(jīng)分割完成的小文件。-m:明確禁止文件的行去匹配PATTERN。-s:(silent)不打印小文件的文件大小。-z:如果切分后的小文件中有空文件,則刪除它們。

FILE:待切分的文件,如果要切分標準輸入數(shù)據(jù),則使用"-"。

PATTERNs:

INTEGER :數(shù)值,假如為N,表示拷貝1到N-1行的內(nèi)容到一個小文件中,其余內(nèi)容到另一個小文件中。/REGEXP/[OFFSET]:從匹配到的行開始按照偏移量拷貝指定行數(shù)的內(nèi)容到小文件中。

:其中OFFSET的格式為"+N"或"-N",表示向后和向前拷貝N行%REGEXP%[OFFSET]:匹配到的行被忽略。

{INTEGER} :假如值為N,表示重復N此前一個模式匹配。

{*} :表示一直匹配到文件結尾才停止匹配。

假設文件內(nèi)容如下:

[root@linuxidc ~]# cattest.txt

SERVER-1[connection]192.168.0.1success

[connection]192.168.0.2failed

[disconnect]192.168.0.3pending

[connection]192.168.0.4success

SERVER-2[connection]192.168.0.1failed

[connection]192.168.0.2failed

[disconnect]192.168.0.3success

[CONNECTION]192.168.0.4pending

SERVER-3[connection]192.168.0.1pending

[connection]192.168.0.2pending

[disconnect]192.168.0.3pending

[connection]192.168.0.4 failed

假設每個SERVER-n表示一個段落,于是要按照段落切分該文件,使用以下語句:

[root@linuxidc ~]# csplit -f test_ -b %04d.log test.txt /SERVER/ {*}0

140

139

140

"-f test_" 指定小文件前綴為"test_", "-b %04d.log" 指定文件后綴格式"00xx.log",它自動為每個小文件追加額外的后綴".log", "/SERVER/" 表示匹配的模式,每匹配到一次,就生成一個小文件,且匹配到的行是該小文件中的內(nèi)容, "{*}" 表示無限匹配前一個模式即/SERVER/直到文件結尾,假如不知道{*}或指定為{1},將匹配一次成功后就不再匹配。

[root@linuxidc ~]# ls test_*test_0000.log test_0001.log test_0002.log test_0003.log

上面的文件中雖然只有三個段落:SERVER-1,SERVER-2,SERVER-3,但切分的結果生成了4個小文件,并且注意到第一個小文件大小為0字節(jié)。為什么會如此?因為在模式匹配的時候,每匹配到一行,這一行就作為下一個小文件的起始行。由于此文件第一行"SERVER-1"就被/SERVER/匹配到了,因此這一行是作為下一個小文件的內(nèi)容,在此小文件之前還自動生成一個空文件。

生成的空文件可以使用"-z"選項來刪除。

[root@linuxidc ~]# csplit -f test1_ -z -b %04d.log test.txt /SERVER/ {*}140

139

140

還可以指定只拷貝匹配到的行偏移數(shù)量。例如,匹配到行時,只拷貝它后面的1行(包括它自身共兩行),但多余的行將放入下一個小文件中。

[root@linuxidc ~]# csplit -f test2_ -z -b %04d.log test.txt /SERVER/+2 {*}42

139

140

98

第一個小文件只有兩行。

[root@linuxidc ~]# cattest2_0000.log

SERVER-1[connection]192.168.0.1 success

SERVER-1段落的其余內(nèi)容放入到了第二個小文件中。

[root@linuxidc ~]# cattest2_0001.log

[connection]192.168.0.2failed

[disconnect]192.168.0.3pending

[connection]192.168.0.4success

SERVER-2[connection]192.168.0.1 failed

同理第三個小文件也一樣,直到最后一個小文件中存放剩余所有無法匹配的內(nèi)容。

[root@linuxidc ~]# cattest2_0003.log

[connection]192.168.0.2pending

[disconnect]192.168.0.3pending

[connection]192.168.0.4 failed

指定"-s"或"-q"選項以靜默模式運行,將不會輸出小文件的大小信息。

[root@linuxidc ~]# csplit -q -f test3_ -z -b %04d.log test.txt /SERVER/+2 {*}

linux下將文件按行分割的命令

1)按2行切割 -l 2

2)指定切割后的文件前綴名 data_

3)指定切割后的文件后綴名為數(shù)字 -d

4)指定切割后的文件后綴名數(shù)字的長度? ? -a 4,即位寬(10進制),這里長度可根據(jù)切割出來的文件有多少估算,到底拆分為幾個文件,由總行數(shù),和每個文件的行數(shù)決定,不用指定。

如果為-a 4文件的后綴數(shù)字從0000開始計算,依次為0001,0002,0003,0004

split -l 2 data.log -d -a 4 data_

將文件data.log進行拆分,每個文件2行,如果文件總共有7行,則分為data_0000,data_0001,data_0002,data_0003

linux文件拆分命令

Linux中分割文件用split命令,這個命令可以將一個文件分割成指定大小的多個文件,split命令的用法是:

split -b 分割的大小 需要分割的文件名 分割后文件的前導文字

這里解釋一下,-b參數(shù)表示按照文件大小單位來進行分割(split命令還有一個-l參數(shù),是根據(jù)文本文件的行數(shù)來進行分割,這個-b參數(shù)是根據(jù)大小來分割的),-b參數(shù)后面跟的是分割的依據(jù)——文件大小,文件大小的單位可以是b、k、m,比如300m。“分割后文件的前導文字”是干嘛的呢,其實是在分割后的文件名前面加上一個前綴。下面是一個例子,就假設需要分割的文件是/root/bigfile:

split -b 50m /root/bigfile chunk

這條命令產(chǎn)生的分割文件可能是:chunkaa、chunkab、chunkac,看到前導文字的作用了吧。

那么如何將分割后的文件再合并起來呢,還是接著上面的那個例子,用下面這條命令就可以了(先用cd /root切換到/root目錄):

cat chunk* bigfile


本文題目:linux命令分割 linux命令分隔符
本文地址:http://weahome.cn/article/doeigsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部