close

cat (concatenate) 瀏覽(列印)檔案內容

指令語法:

cat [OPTION] [FILE]...

參數說明:

  •  -b:將每一行(不含空白列)附上行號列印出來。相當於 nl 指令。
  •  -n:將每一行(含空白列)附上行號列印出來。

範例:

[barry@rhel ~]$ cat > file

aaaaaaaaaa

bbbbbbbbbb

 

CCCCCCCCCC

[barry@rhel ~]$ cat -b file

[barry@rhel ~]$ nl file

[barry@rhel ~]$ cat -n file

[barry@rhel ~]$ tac file
→ 將輸出內容反向做排序。

[root@study ~]# cat [-AbEnTv]
選項與參數:
-A  :相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已;
-b  :列出行號,僅針對非空白行做行號顯示,空白行不標行號!
-E  :將結尾的斷行字元 $ 顯示出來;
-n  :列印出行號,連同空白行也會有行號,與 -b 的選項不同;
-T  :將 [tab] 按鍵以 ^I 顯示出來;
-v  :列出一些看不出來的特殊字符

範例一:檢閱 /etc/issue 這個檔案的內容
[root@study ~]# cat /etc/issue
\S
Kernel \r on an \m

範例二:承上題,如果還要加印行號呢?
[root@study ~]# cat -n /etc/issue
     1  \S
     2  Kernel \r on an \m
     3
# 所以這個檔案有三行!看到了吧!可以印出行號呢!這對於大檔案要找某個特定的行時,有點用處!
# 如果不想要編排空白行的行號,可以使用『cat -b /etc/issue』,自己測試看看:

範例三:將 /etc/man_db.conf 的內容完整的顯示出來(包含特殊字元)
[root@study ~]# cat -A /etc/man_db.conf
# $
....(中間省略)....
MANPATH_MAP^I/bin^I^I^I/usr/share/man$
MANPATH_MAP^I/usr/bin^I^I/usr/share/man$
MANPATH_MAP^I/sbin^I^I^I/usr/share/man$
MANPATH_MAP^I/usr/sbin^I^I/usr/share/man$
.....(底下省略).....
# 上面的結果限於篇幅,鳥哥刪除掉很多資料了。另外,輸出的結果並不會有特殊字體,
# 鳥哥上面的特殊字體是要讓您發現差異點在哪裡就是了。基本上,在一般的環境中,
# 使用 [tab] 與空白鍵的效果差不多,都是一堆空白啊!我們無法知道兩者的差別。
# 此時使用 cat -A 就能夠發現那些空白的地方是啥鬼東西了![tab]會以 ^I 表示,
# 斷行字元則是以 $ 表示,所以你可以發現每一行後面都是 $ 

 

tac (反向列示)

[root@study ~]# tac /etc/issue

Kernel \r on an \m
\S
# 嘿嘿!與剛剛上面的範例一比較,是由最後一行先顯示喔!

tac 這個好玩了!怎麼說呢?詳細的看一下, cat 與 tac ,有沒有發現呀?

對啦! tac 剛好是將 cat 反寫過來,所以他的功能就跟 cat 相反啦,

cat 是由『第一行到最後一行連續顯示在螢幕上』,

而 tac 則是『 由最後一行到第一行反向在螢幕上顯示出來 』,很好玩吧!

 

nl (添加行號列印)

[root@study ~]# nl [-bnw] 檔案
選項與參數:
-b  :指定行號指定的方式,主要有兩種:
      -b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);
      -b t :如果有空行,空的那一行不要列出行號(預設值);
-n  :列出行號表示的方法,主要有三種:
      -n ln :行號在螢幕的最左方顯示;
      -n rn :行號在自己欄位的最右方顯示,且不加 0 ;
      -n rz :行號在自己欄位的最右方顯示,且加 0 ;
-w  :行號欄位的佔用的字元數。

範例一:用 nl 列出 /etc/issue 的內容
[root@study ~]# nl /etc/issue
     1  \S
     2  Kernel \r on an \m

# 注意看,這個檔案其實有三行,第三行為空白(沒有任何字元),
# 因為他是空白行,所以 nl 不會加上行號喔!如果確定要加上行號,可以這樣做:

[root@study ~]# nl -b a /etc/issue
     1  \S
     2  Kernel \r on an \m
     3
# 呵呵!行號加上來囉~那麼如果要讓行號前面自動補上 0 呢?可這樣

[root@study ~]# nl -b a -n rz /etc/issue
000001  \S
000002  Kernel \r on an \m
000003
# 嘿嘿!自動在自己欄位的地方補上 0 了~預設欄位是六位數,如果想要改成 3 位數?

[root@study ~]# nl -b a -n rz -w 3 /etc/issue
001     \S
002     Kernel \r on an \m
003
# 變成僅有 3 位數囉~

nl 可以將輸出的檔案內容自動的加上行號!

其預設的結果與 cat -n 有點不太一樣, nl 可以將行號做比較多的顯示設計,包括位數與是否自動補齊 0 等等的功能呢。

 

arrow
arrow
    創作者介紹
    創作者 STORY 的頭像
    STORY

    STORY

    STORY 發表在 痞客邦 留言(0) 人氣()