導航:首頁 > 操作系統 > linux分隔文件

linux分隔文件

發布時間:2022-11-28 08:01:05

linux中怎麼將文件合並

方法一:使用cat命令從文件中讀入兩個文件,然後將重定向到一個新的文件。這種方法可以一次性合並任意多個文件。

用法示例:

將file1.txt和file2.txt合並到file.txt

$ cat file1.txt file2.txt > file.txt

方法二:只使用cat命令讀入一個文件,然後使用>>將文本流追加到另一個文件的末位。

用法示例:

將file1.txt追加到file2.txt的末尾

$ cat file1.txt >> file2.txt

(1)linux分隔文件擴展閱讀:

反之分割文件

linux下文件分割可以通過split命令來實現,可以指定按行數分割和安大小分割兩種模式。Linux下文件合並可以通過cat命令來實現,非常簡單。

1、在Linux下用split進行文件分割:

模式一:指定分割後文件行數

對與txt文本文件,可以通過指定分割後文件的行數來進行文件分割。

命令:split-l300large_file.txtnew_file_prefix

模式二:指定分割後文件大小

split-b10mserver.logwaynelog

對二進制文件我們同樣也可以按文件大小來分隔。

2、將一個大文件分成若干個小文件方法

例如將一個BLM.txt文件分成前綴為 BLM_ 的1000個小文件,後綴為系數形式,且後綴為4位數字形式

先利用wc -l BLM.txt

讀出 BLM.txt 文件一共有多少行

再利用 split 命令

split -l 2482 ../BLM/BLM.txt -d -a 4 BLM_

將文件 BLM.txt 分成若干個小文件,每個文件2482行(-l 2482),文件前綴為BLM_ ,系數不是字母而是數字(-d),後綴系數為四位數(-a 4)

② Linux裡面分割,切片是什麼

在Linux最常用的文件生成和切片工具是dd,它功能比較全面,但無法以行為單位提取文件數據,也無法直接將文件按大小或行數進行均分(除非藉助循環)。另兩款數據分割工具split和csplit能夠比較輕松地實現這些需求。csplit是split的升級版。
1.1 dd命令
從if指定的文件讀取數據,寫入到of指定的文件。使用bs指定讀取和寫入的塊大小,使用count指定讀取和寫入的數據塊數量,bs和count相乘就是文件總大小。可以指定skip忽略讀取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。
假設現有文件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掉的數據塊數量為250。
dd if=/tmp/CentOS.iso of=/tmp/CentOS2.iso bs=2M skip=250
現在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
CentOS_m.iso
CentOS.iso
那麼seek選項呢?和skip有什麼區別?skip選項是忽略讀取時的前N個數據塊,而seek是忽略寫入文件的前N個數據塊。假如要寫入的文件為a.log,則seek=2時,將從a.log的第3個數據塊開始追加數據,如果a.log文件本身大小就不足2個數據塊,則缺少的部分自動使用/dev/zero填充。
於是,在有了CentOS1.iso的基礎上,要將其還原為和CentOS.iso相同的文件,可以使用下面的方法:
dd if=/tmp/CentOS.iso of=/tmp/CentOS1.iso bs=2M skip=250 seek=250
還原後,它們的md5值也是相同的。
shell>md5sum CentOS1.iso CentOS.iso
CentOS1.iso
CentOS.iso
1.2 split命令
split工具的功能是將文件切分為多個小文件。既然要生成多個小文件,必然要指定切分文件的單位,支持按行切分以及按文件大小切分,另外還需解決小文件命名的問題。例如,文件名前綴、後綴。如果未明確指定前綴,則默認的前綴為"x"。
以下是命令的語法說明:
例如,將/etc/fstab按行切分,每5行切分一次,並指定小文件的前綴為"fs_",後綴為數值後綴,且後綴長度為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
還原後,它們的內容是完全一致的。可以使用md5sum比較。
[root@linuxidc ~]# md5sum /etc/fstab ~/fstab.bak
/etc/fstab
/root/fstab.bak
還可以將標准輸入的數據進行切分,並分別寫入到小文件中。例如:
[root@linuxidc ~]# seq 1 2 15 | split -l 3 -d -new_
[root@linuxidc~]# ls new*new_00 new_01 new_02
可以為每個小文件追加額外的後綴。有些老版本的split不支持該選項,而是在csplit上支持的,但是新版本的split已經支持。例如,加上".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", ...,並在標准輸出中輸出每個小文件的位元組數。
選項說明:-b FORMAT:指定文件後綴格式,格式為printf的格式,默認為%02d。表示後綴以2位數值,且不足處以0填充。-f PREFIX:指定前綴,不指定是默認為"xx"。-k:用於突發情況。表示即使發生了錯誤,也不刪除已經分割完成的小文件。-m:明確禁止文件的行去匹配PATTERN。-s:(silent)不列印小文件的文件大小。-z:如果切分後的小文件中有空文件,則刪除它們。
FILE:待切分的文件,如果要切分標准輸入數據,則使用"-"。
PATTERNs:
INTEGER :數值,假如為N,表示拷貝1到N-1行的內容到一個小文件中,其餘內容到另一個小文件中。/REGEXP/[OFFSET]:從匹配到的行開始按照偏移量拷貝指定行數的內容到小文件中。
:其中OFFSET的格式為"+N"或"-N",表示向後和向前拷貝N行%REGEXP%[OFFSET]:匹配到的行被忽略。
{INTEGER} :假如值為N,表示重復N此前一個模式匹配。
{*} :表示一直匹配到文件結尾才停止匹配。
假設文件內容如下:
[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/" 表示匹配的模式,每匹配到一次,就生成一個小文件,且匹配到的行是該小文件中的內容, "{*}" 表示無限匹配前一個模式即/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位元組。為什麼會如此?因為在模式匹配的時候,每匹配到一行,這一行就作為下一個小文件的起始行。由於此文件第一行"SERVER-1"就被/SERVER/匹配到了,因此這一行是作為下一個小文件的內容,在此小文件之前還自動生成一個空文件。
生成的空文件可以使用"-z"選項來刪除。
[root@linuxidc ~]# csplit -f test1_ -z -b %04d.log test.txt /SERVER/ {*}140
139
140
還可以指定只拷貝匹配到的行偏移數量。例如,匹配到行時,只拷貝它後面的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段落的其餘內容放入到了第二個小文件中。
[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
同理第三個小文件也一樣,直到最後一個小文件中存放剩餘所有無法匹配的內容。
[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下將文件打包、壓縮並分割成指定大小

https://blog.csdn.net/whu_zhangmin/article/details/45870077

tar -zcvf cm-11.tar.gz cm-11
//將cm-11文件夾壓縮成cm-11.tar.gz

split -b 4000M -d -a 1 cm-11.tar.gz cm-11.tar.gz.
//使用split命令,-b 4000M 表示設置每個分割包的大小,單位還是可以k
// -d "參數指定生成的分割包後綴為數字的形式
//-a x來設定序列的長度(默認值是2),這里設定序列的長度為1
執行命令後,生成壓縮包如下:

tar -zcvf cm-11.tar.gz cm-11 | split -b 4000M -d -a 1 - cm-11.tar.gz.
//採用管道,其中 - 參數表示將所創建的文件輸出到標准輸出上

tar -zxvf cm-11.tar.gz

cat cm-11.tar.gz.* | tar -zxv

tar可以用來壓縮打包單文件、多個文件、單個目錄、多個目錄。
Linux打包命令 tar
tar命令可以用來壓縮打包單文件、多個文件、單個目錄、多個目錄。
常用格式:
單個文件壓縮打包 tar -czvf my.tar.gz file1
多個文件壓縮打包 tar -czvf my.tar.gz file1 file2,...(file )(也可以給file 文件mv 目錄在壓縮)
單個目錄壓縮打包 tar -czvf my.tar.gz dir1
多個目錄壓縮打包 tar -czvf my.tar.gz dir1 dir2
解包至當前目錄:tar -xzvf my.tar.gz
cpio
含子目錄find x* | cpio -o > /y/z.cpio
不含子目錄ls x* | cpio -o > /y/z.cpio
解包: cpio -i < /y/z.cpio
[root@linux ~]# tar [-cxtzjvfpPN] 文件與目錄 ....
參數:
-c :建立一個壓縮文件的參數指令(create 的意思);
-x :解開一個壓縮文件的參數指令!
-t :查看 tarfile 裡面的文件!
特別注意,在參數的下達中, c/x/t 僅能存在一個!不可同時存在!
因為不可能同時壓縮與解壓縮。
-z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮?
-j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮?
-v :壓縮的過程中顯示文件!這個常用,但不建議用在背景執行過程!
-f :使用檔名,請留意,在 f 之後要立即接檔名喔!不要再加參數!
例如使用『 tar -zcvfP tfile sfile』就是錯誤的寫法,要寫成
『 tar -zcvPf tfile sfile』才對喔!
-p :使用原文件的原來屬性(屬性不會依據使用者而變)
-P :可以使用絕對路徑來壓縮!
-N :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的文件中!
--exclude FILE:在壓縮的過程中,不要將 FILE 打包!

④ linux 如何將一個大文件分成幾個小文件

1、連接上相應的linux主機,進入到等待輸入shell指令的linux命令行狀態下。

⑤ linux分割文件test.txt分別儲存兩個文件里

摘要 您好,linux下文件分割可以通過split命令來實現,可以指定按行數分割和安大小分割兩種模式。Linux下文件合並可以通過cat命令來實現,非常簡單。

⑥ 如何將linux文件分割為幾個

Linux中分割文件用split命令,這個命令可以將一個文件分割成指定大小的多個文件,split命令的用法是:
split -b 分割的大小 需要分割的文件名 分割後文件的前導文字
這里解釋一下,-b參數表示按照文件大小單位來進行分割(split命令還有一個-l參數,是根據文本文件的行數來進行分割,這個-b參數是根據大小來分割的),-b參數後面跟的是分割的依據——文件大小,文件大小的單位可以是b、k、m,比如300m。「分割後文件的前導文字」是幹嘛的呢,其實是在分割後的文件名前面加上一個前綴。下面是一個例子,就假設需要分割的文件是/root/bigfile:
split -b 50m /root/bigfile chunk
這條命令產生的分割文件可能是:chunkaa、chunkab、chunkac,看到前導文字的作用了吧。
那麼如何將分割後的文件再合並起來呢,還是接著上面的那個例子,用下面這條命令就可以了(先用cd /root切換到/root目錄):
cat chunk* >> bigfile

⑦ linux 如何將一個大文件分成幾個小文件

方法/步驟
1.命令:split,例子:
2.以行數拆分
-l參數:
3.split
–l
50
原始文件
拆分後文件名前綴
4.說明:以50行對文件進行拆分,最後一個文件的行數沒有50行以實際行數進行分配,比如有一個名為
wlan_date.txt的文件,公有120行,進行拆分:
split
-l
50
wlan_date.txt
wlan
5.拆分後會生成
wlanaa
wlanab
wlanac
三個文件,wlanaa
wlanab兩個文件分別50行,wlanac文件剩下20行
6.以大小拆分
-b參數:split
–b
50
原始文件
拆分後文件名前綴

⑧ linux-字元處理

linux基礎-字元處理

linux管道命令(pipe)

菜鳥教程

管道是一種通信機制,通常用於進程間的通信,它表現出來的形式將前面每一個進程的輸出直接作為下一個進程的輸入。

管道命令使用 | 作為界定符號。

默認情況下,sort命令以第一列進行排序

反向排序

按指定列進行排序,默認是空白符,也可以用 -t 指定分隔符

第二列排序的時候可以加 -n 進行數值排序

進行排序後,排序結果會顯示在終端,但是原文件不會改變,可以用-o重定向或者另存。用 > 覆蓋某個文件會失敗,數據被清空,但是用 >> 追加可以

為初學者提供的uniq命令教程及示例

uniq 命令用於檢查及刪除文本文件中重復出現的行列。uniq命令只有在相鄰的情況下才會刪除重復的行,因此一般與 sort 命令結合使用,此外,該命令也可以檢查文本文件中重復出現的行列,默認區分大小寫。

准備一個文件

准備一個文件

以分割符指定分割某些特定的列

Linux tr 命令用於轉換或刪除文件中的字元。

tr 指令從標准輸入設備讀取數據,經過字元串轉譯後,將結果輸出到標准輸出設備。

語法:tr [OPTION]…SET1[SET2]

小寫轉換為大寫

刪除字元

Linux paste 命令用於合並文件的列。

paste 指令會把每個文件以列對列的方式,一列列地加以合並。

不加參數會默認以製表符為分界列對列合並

-d可以設置以何種字元合並

使用s參數時。單個文件會將該文件的多行數據合並成一行顯示,多個文件會將各個文件單獨合並成一行之後再行對行合並

Linux split命令用於將一個文件分割成數個。

該指令將大文件分割成較小的文件,在默認情況下將按照每1000行切割成一個小文件。

將根目錄文件信息寫入文件

對上面的文件9行為一個文件進行分割

以1k位元組分割文件

不加參數會同時顯示行數,字數,Bytes數,加上上述參數會單獨顯示其中一項

⑨ Linux下使用cronolog切割伺服器日誌文件的方法

Linux下運行的Web伺服器Apache,默認日誌文件是不分割的,一個整文件既不易於管理,也不易於分析統計。安裝cronolog後,可以將日誌文件按時間分割,易於管理和分析。

cronolog安裝配置非常簡單,下載後只需要輸入幾個命令即可完成。

1、下載(最新版本)

# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz

2、解壓縮

# tar zxvf cronolog-1.6.2.tar.gz

3、進入cronolog安裝文件所在目錄

# cd cronolog-1.6.2

4、運行安裝

# ./configure

# make

# make install

5、查看cronolog安裝後所在目錄(驗證安裝是否成功)

# which cronolog

一般情況下顯示為:/usr/local/sbin/cronolog

整個安裝過程結束,下面需要把日誌的格式配置一下:

1、虛擬主機配置文件 httpd-vhosts.conf

將Web日誌設置 CustomLog 修改為以下格式

CustomLog "|/usr/local/sbin/cronolog /www/logs/example_%Y%m%d.log" combined

當然,錯誤日誌設置 ErrorLog 也可以利用 cronolog 分割,設置為

ErrorLog "|/usr/local/sbin/cronolog /www/logs/error_%Y%m%d.log"

2、如果伺服器上只有一個站點(當然這種情況比較少),直接按上面所說格式修改 httpd.conf 文件日誌設置部分。

說明:

綠色部分 為 cronolog 安裝後所在位置,系統版本不同可能位置不完全一樣,以 which 命令查看到的位置為准;

藍色部分 為設置的日誌文件所在位置,根據需要修改;

紅色部分 為設置的日誌文件標識性字元,根據需要修改;

%Y%m%d 為日誌文件分割方式,例子中為「年月日」,也可以修改成自己需要的。

修改httpd.conf文件:

這個文件在我的電腦上是在 /etc/httpd/conf/httpd.conf 不同的伺服器 應該是不一樣的

在最後加上

# ServerAdmin [email protected]

# DocumentRoot /www/docs/mmy-host.example.com

# ServerName mmy-host.example.com

ErrorLog /data/logs/apache/webapps.wps.cn-error_log

CustomLog "|/usr/local/sbin/cronolog /data/logs/apache/%Y%m%d/access_log.%H" combined

#這個保證了每天一個文件夾 文件夾下 每個小時產生一個log

#CustomLog "|/usr/local/sbin/cronolog /data/logs/apache/%Y%m%%Hdaccess_log" combined

進入到 /etc/init.d/httpd configtest 這樣驗證你的配置文件是否正確

進入到 /etc/init.d/httpd restart 重啟apache 伺服器(不同的'系統應該是不一樣 要自己找到)

用於Tomcat

第一步

if [ -z "$CATALINA_OUT" ] ; then

CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out

fi

修改為

if [ -z "$CATALINA_OUT" ] ; then

CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d

fi

第二步

touch "$CATALINA_OUT"

改為

#touch "$CATALINA_OUT"

第三步

org.apache.catalina.startup.Bootstrap "$@" start

>> "$CATALINA_OUT" 2>&1 &

修改為

org.apache.catalina.startup.Bootstrap "$@" start 2>&1

| /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &

重新啟動 Tomcat

service tomcat restart

可以在 Tomcat 的 logs 目錄底下找到以系統日期為結尾的 catalina.out.yyyy-mm-dd 的檔案,這樣子就成功了。

後續就是持續觀察看看是不是每天都有產生一個新的 catalina.out.yyyy-mm-dd 檔案。然後再安排定期刪除這些較舊的 log 檔即可。

閱讀全文

與linux分隔文件相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:962
phpffmpeg轉碼 瀏覽:671
長沙好玩的解壓項目 瀏覽:144
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:484
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:381
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:349
風翼app為什麼進不去了 瀏覽:778
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:150
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163