歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> linux下cat命令詳解

linux下cat命令詳解

日期:2017/3/1 18:12:16   编辑:Linux技術

1.命令格式:

cat [選項] [文件]...

2.命令功能:

cat主要有三大功能:

1.一次顯示整個文件:cat filename
2.從鍵盤創建一個文件:cat > filename 只能創建新文件,不能編輯已有文件.
3.將幾個文件合並為一個文件:cat file1 file2 > file

3.命令參數:

-A, --show-all 等價於 -vET
-b, --number-nonblank 對非空輸出行編號
-e 等價於 -vE
-E, --show-ends 在每行結束處顯示 $
-n, --number 對輸出的所有行編號,由1開始對所有輸出的行數編號
-s, --squeeze-blank 有連續兩行以上的空白行,就代換為一行的空白行
-t 與 -vT 等價
-T, --show-tabs 將跳格字符顯示為 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外

4.使用實例:

實例一:把 log2012.log 的文件內容加上行號後輸入 log2013.log 這個文件裡

命令:

cat -n log2012.log log2013.log

輸出:

復制代碼代碼如下:
[root@localhost test]# cat log2012.log
2012-01
2012-02
======[root@localhost test]# cat log2013.log
2013-01
2013-02
2013-03
======[root@localhost test]# cat -n log2012.log log2013.log
1 2012-01
2 2012-02
3
4
5 ======
6 2013-01
7 2013-02
8
9
10 2013-03
11 ======[root@localhost test]#


說明:

實例二:把 log2012.log 和 log2013.log 的文件內容加上行號(空白行不加)之後將內容附加到 log.log 裡。

命令:

cat -b log2012.log log2013.log log.log
輸出:

復制代碼代碼如下:
[root@localhost test]# cat -b log2012.log log2013.log log.log
1 2012-01
2 2012-02</p> <p> 3 ======
4 2013-01
5 2013-02</p> <p> 6 2013-03
7 ======[root@localhost test]#

實例三:把 log2012.log 的文件內容加上行號後輸入 log.log 這個文件裡
命令:
輸出:

復制代碼代碼如下:
[root@localhost test]# cat log.log
[root@localhost test]# cat -n log2012.log > log.log
[root@localhost test]# cat -n log.log
1 2012-01
2 2012-02
3
4
5 ======
[root@localhost test]#

實例四:使用here doc來生成文件
輸出:

復制代碼代碼如下:
[root@localhost test]# cat >log.txt <<EOF
> Hello
> World
> Linux
> PWD=$(pwd)
> EOF
[root@localhost test]# ls -l log.txt
-rw-r--r-- 1 root root 37 10-28 17:07 log.txt
[root@localhost test]# cat log.txt
Hello
World
Linux
PWD=/opt/soft/test
[root@localhost test]#

說明:
注意粗體部分,here doc可以進行字符串替換。

備注:
tac (反向列示)
命令:
tac log.txt
輸出:


復制代碼代碼如下:
[root@localhost test]# tac log.txt
PWD=/opt/soft/test
Linux
World
Hello

說明:
tac 是將 cat 反寫過來,所以他的功能就跟 cat 相反, cat 是由第一行到最後一行連續顯示在螢幕上,而 tac 則是由最後一行到第一行反向在螢幕上顯示出來!

注:在awk命令之後,沒有太多復雜命令,都是一些基礎命令。

說明:

cat,是單詞 concatenate 的縮寫, 把文件的內容輸出到stdout.當與重定向操作符 (> 或
>>結合使用時, 一般都是用來將多個文件連接起來.

用法:

1. $cat file1 file2 file3
2. 不僅可以從文件中讀取內容並且拼接,還能從標准輸入流中讀取

例如:$echo 'some content' | cat - file.txt

解釋:這裡的 - 就代表了 'some content' 的臨時文件,也就是輸入流

實例:

1. $cat cat.txt

打印了cat.txt的所有內容

2.$cat cat.txt | less

查看cat.txt, 加入less以後一頁一屏幕,具體再以後less,more命令中介紹

3.$cat -n cat.txt

每行前標注行號,包括空白行

4.$cat -b cat.txt

非空白行前標注行號

解讀--help

用法:cat [選項]... [文件]...
將[文件]或標准輸入組合輸出到標准輸出。

-A, --show-all 等於-vET
-b, --number-nonblank 對非空輸出行編號
-e 等於-vE
-E, --show-ends 在每行結束處顯示"$"
-n, --number 對輸出的所有行編號
-s, --squeeze-blank 不輸出多行空行
-t 與-vT 等價
-T, --show-tabs 將跳格字符顯示為^I
-u (被忽略)
-v, --show-nonprinting 使用^ 和M- 引用,除了LFD和 TAB 之外
--help 顯示此幫助信息並退出
--version 顯示版本信息並退出

如果沒有指定文件,或者文件為"-",則從標准輸入讀取。

示例:
cat f - g 先輸出f 的內容,然後輸出標准輸入的內容,最後輸出g 的內容。
cat 將標准輸入的內容復制到標准輸出。

解讀:

1. cat –s file.txt

如果有一個文件有這樣的格式:

line1

#空行
line2 file2

用到這個命令

cat更多與其他命令結合,自身沒有太復雜的內容,要是無聊,試試cat –A cat.txt,會有難忘的回憶。

相關命令:

cat的親家一般是sed,tr這種命令

如:

$cat file|sed 's/old/new/g'

顯示file文件,並且將old 轉換成new,不修改原文件

簡略版:

cat主要有三大功能:
1.一次顯示整個文件。$ cat filename
2.從鍵盤創建一個文件。$ cat > filename
只能創建新文件,不能編輯已有文件.
3.將幾個文件合並為一個文件: $cat file1 file2 > file 參數:
-n 或 --number 由 1 開始對所有輸出的行數編號
-b 或 --number-nonblank 和 -n 相似,只不過對於空白行不編號
-s 或 --squeeze-blank 當遇到有連續兩行以上的空白行,就代換為一行的空白行
-v 或 --show-nonprinting
例:
把 textfile1 的檔案內容加上行號後輸入 textfile2 這個檔案裡
cat -n textfile1 > textfile2
把 textfile1 和 textfile2 的檔案內容加上行號(空白行不加)之後將內容附加到 textfile3 裡。
cat -b textfile1 textfile2 >> textfile3 把test.txt文件扔進垃圾箱,賦空值test.txt
cat /dev/null > /etc/test.txt 詳細點的:

cat 是一個文本文件查看和連接工具。查看一個文件的內容,用cat比較簡單,就是cat 後面直接接文件名。

比如:

de>[root@localhost ~]# cat /etc/fstabde>

為了便於新手弟兄靈活掌握這個工具,我們多說一點常用的參數;


1.0 cat 語法結構;

de>cat [選項] [文件]...de>
選項
-A, --show-all 等價於 -vET
-b, --number-nonblank 對非空輸出行編號
-e 等價於 -vE
-E, --show-ends 在每行結束處顯示 $
-n, --number 對輸出的所有行編號
-s, --squeeze-blank 不輸出多行空行
-t 與 -vT 等價
-T, --show-tabs 將跳 字符顯示為 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
--help 顯示此幫助信息並離開


1.1 cat 查看文件內容實例;

de>[root@localhost ~]# cat /etc/profile 注:查看/etc/目錄下的profile文件內容;
[root@localhost ~]# cat -b /etc/fstab 注:查看/etc/目錄下的profile內容,並且對非空白行進行編號,行號從1開始;
[root@localhost ~]# cat -n /etc/profile 注:對/etc目錄中的profile的所有的行(包括空白行)進行編號輸出顯示;
[root@localhost ~]# cat -E /etc/profile 注:查看/etc/下的profile內容,並且在每行的結尾處附加$符號;de>

cat 加參數-n 和nl工具差不多,文件內容輸出的同時,都會在每行前面加上行號;

de>[root@localhost ~]# cat -n /etc/profile
[root@localhost ~]# nl /etc/profilede>

cat 可以同時顯示多個文件的內容,比如我們可以在一個cat命令上同時顯示兩個文件的內容;

de>[root@localhost ~]# cat /etc/fstab /etc/profilede>

cat 對於內容極大的文件來說,可以通過管道|傳送到more 工具,然後一頁一頁的查看;

de>[root@localhost ~]# cat /etc/fstab /etc/profile | morede>


1.2 cat 的創建、連接文件功能實例;


cat 有創建文件的功能,創建文件後,要以EOF或STOP結束;

de>[root@localhost ~]# cat > linuxsir.org.txt << EOF 注:創建linuxsir.org.txt文件;
> 我來測試 cat 創建文件,並且為文件輸入內容; 注:這是為linuxsir.org.txt文件輸入內容;
> 北南南北 測試; 注:這是為linuxsir.org.txt文件輸入內容;
> EOF 注:退出編輯狀態;

[root@localhost ~]# cat linuxsir.org.txt 注:我們查看一下linuxsir.org.txt文件的內容;

我來測試 cat 創建文件,並且為文件輸入內容;
北南南北 測試;de>

cat 還有向已存在的文件追加內容的功能;

de>[root@localhost ~]# cat linuxsir.txt 注:查看已存在的文件linuxsir.txt 內容;
I am BeiNanNanBei From LinuxSir.Org . 注:內容行
我正在為cat命令寫文檔


[root@localhost ~]# cat >> linuxsir.txt << EOF 注:我們向linuxsir.txt文件追加內容;
> 我來測試cat向文檔追加內容的功能; 注:這是追回的內容
> OK?
> OK~
> 北南 呈上
> EOF 注:以EOF退出;


[root@localhost ~]# cat linuxsir.txt 注:查看文件內容,看是否追回成功。
I am BeiNanNanBei From LinuxSir.Org .
我正在為cat命令寫文檔

我來測試cat向文檔追加內容的功能;
OK?
OK~
北南 呈上de>


cat 連接多個文件的內容並且輸出到一個新文件中;

假設我們有sir01.txt、sir02.tx和sir03.txt ,並且內容如下;

de>[root@localhost ~]# cat sir01.txt
123456
i am testing

[root@localhost ~]# cat sir02.txt
56789
BeiNan Tested

[root@localhost ~]# cat sir03.txt
09876
linuxsir.org testingde>

我想通過cat 把sir01.txt、sir02.txt及sir03.txt 三個文件連接在一起(也就是說把這三個文件的內容都接在一起)並輸出到一個新的文件sir04.txt 中。

注意:其原理是把三個文件的內容連接起來,然後創建sir04.txt文件,並且把幾個文件的內容同時寫入sir04.txt中。特別值得一提的是,如果您輸入到一個已經存在的sir04.txt 文件,會把sir04.txt內容清空。

de>[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt > sir04.txt

[root@localhost ~]# more sir04.txt
123456
i am testing
56789
BeiNan Tested
09876
linuxsir.org testingde>

cat 把一個或多個已存在的文件內容,追加到一個已存在的文件中

de>[root@localhost ~]# cat sir00.txt
linuxsir.org forever

[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir00.txt

[root@localhost ~]# cat sir00.txt
linuxsir.org forever
123456
i am testing
56789
BeiNan Tested
09876
linuxsir.org testingde>

警告:我們要知道>意思是創建,>>是追加。千萬不要弄混了。造成失誤可不是鬧著玩的;

Copyright © Linux教程網 All Rights Reserved