如何在 Linux 命令行中合并文件

我們?cè)谙惹暗奈恼轮薪榻B過 ??cat 命令???的使用,了解到該命令用于獲取文件內(nèi)容并將其輸出到屏幕或其他設(shè)備中。事實(shí)上,cat 命令的最初目的是連接文件,所以我們可以用它來合并文件。
使用 ??cat 命令???合并文件的方法很簡單,在命令后面跟上要合并的文件名稱(包括路徑)即可,如下所示:
我們舉個(gè)例子,假如我們有兩個(gè)文件分別為 file1.txt 和 file2.txt,我們首先使用 cat 命令查看其中的內(nèi)容,然后再將這兩個(gè)文件合并,如下圖所示:

但是上面的例子,只是將兩個(gè)文件的內(nèi)容合并輸出到了終端中,并沒有將合并后的內(nèi)容保存到什么地方,且對(duì)于 file1.txt 和 file2.txt 這兩個(gè)文件也并沒有做什么改動(dòng)。如果我們想要將合并后的內(nèi)容保存到某個(gè)地方,需要將其重定向到另外一個(gè)文件中,如下所示:

上述命令中的 file3.txt 可以是一個(gè)現(xiàn)有的文件,也可以是一個(gè)不存在的文件,如果不存在,將會(huì)創(chuàng)建。另外一個(gè),上面命令中的重定向符號(hào) > 會(huì)覆蓋文件的內(nèi)容,所以我們建議不要使用現(xiàn)有文件,以免被覆蓋。
使用 cat 命令將合并后的內(nèi)容追加到現(xiàn)有文件中
每次合并都要重新創(chuàng)建一個(gè)文件,對(duì)于某些需求來說,也不太方便。那么,有沒有方法將合并后的內(nèi)容追加到某個(gè)現(xiàn)有文件中呢?答案是肯定的。方法就是將重定向符號(hào) > 改為 >>,如下所示:
上面的 file1.txt,file2.txt 和 file3.txt 是前一個(gè)例子中用到的文件,為了區(qū)分,我們?cè)?file1.txt 和 file2.txt 中中添加一些字符,然后執(zhí)行上面命令之,我們?cè)倏匆幌?file3.txt,如下圖所示:

可以看到,file3.txt 中的內(nèi)容是在先前的基礎(chǔ)上追加了部分內(nèi)容。
使用循環(huán)合并多個(gè)文件
如果要合并的文件數(shù)量過多,比如100個(gè),那需要在 cat 命令后添加 100 個(gè)文件名稱嗎?這樣肯定是不現(xiàn)實(shí)的。我們有一個(gè)現(xiàn)成的方法,那就是使用 for 循環(huán)來合并文件。
比如,我們要有file1.txt,file2.txt 。。。file5.txt 5個(gè)文件需要合并,可使用如下命令:

上述命令我們將 5 個(gè)文件的內(nèi)容合并到了新文件 newfile.txt 中。
合并文件的其他方法
除了使用 cat 以外,還可以使用?? sed 命令???來合并文件。sed 是一種非交互式的文件編輯方式,它可以在某個(gè)特定時(shí)間內(nèi)保存文件的更改,使用 h 選項(xiàng),可以將更改暫時(shí)放在緩沖區(qū)。看下面的例子:
















 
 
 










 
 
 
 