Linux系統中的文本處理工具

在大家剛接觸Linux操作系統,首先都會讓你瞭解linux的哲學思想:一切皆文件;那麼今天就帶大家認識linux中的一些文本查看工具。


1、cat和tac

連接文件並在標準輸出上打印;其中cat是正向顯示;tac是倒着顯示

  • 格式:cat [  options ]... [ FILE ]...

  • 選項:

    -E filename 能看到行的結束符

    -A filename 能看到tab鍵 回車

    -n filename 加行號

    -s filename 壓縮空行(連續相鄰的空行)

    -b 加行號,但空行不加    cat > f3 給文件寫入內容(nl==cat -b )

  • 實例:

[ root@vinsent ~ ]#vim 1
[ root@vinsent ~ ]#
[ root@vinsent ~ ]#
[ root@vinsent ~ ]#cat 1 # 直接cat文件名,便可看見文件中的內容,保留原格式
12
dsf

ghjk

hadoop
[ root@vinsent ~ ]#cat -n 1  # -n 查看時添加行號
     1    12
     2    dsf
     3    
     4    ghjk
     5        
     6    hadoop
[ root@vinsent ~ ]#cat -E 1  # -E 選項能看到每行的結束符$
12$
dsf$
$
ghjk$
    $
hadoop$
[ root@vinsent ~ ]#cat -A 1  # -A 能看到詳細的信息,包括tab鍵以及行結束符 
12$
dsf$
$
ghjk$
^I$
hadoop$
[ root@vinsent ~ ]#tac 1  # tac 將文件內容倒着顯示
hadoop
    
ghjk

dsf
12
[ root@vinsent ~ ]#


2、more:

more功能類似 cat ,cat命令是整個文件的內容從上到下顯示在屏幕上。 more會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示,而且還有搜尋字串的功能 。more命令從前向後讀取文件,因此在啓動時就加載整個文件。

  • 格式:

    more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]

  • 選項:

    +n      從笫n行開始顯示

    -n       定義屏幕大小爲n行

    +/pattern 在每個檔案顯示前搜尋該字串(pattern),然後從該字串前兩行之後開始顯示  

    -c       從頂部清屏,然後顯示

    -d       提示“Press space to continue,’q’ to quit(按空格鍵繼續,按q鍵退出)”,禁用響鈴功能,靜默模式

    -l        忽略Ctrl+l(換頁)字符

    -p       通過清除窗口而不是滾屏來對文件進行換頁,與-c選項相似

    -s       把連續的多個空行顯示爲一行

    -u       把文件內容中的下畫線去掉

  • 實例

[ root@vinsent ~ ]#cat -n /etc/passwd | more +4  # 表示從第4行開始顯示
     4    adm:x:3:4:adm:/var/adm:/sbin/nologin
     5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
     6    sync:x:5:0:sync:/sbin:/bin/sync
     7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
...後面省略...
[ root@vinsent ~ ]#cat -n /etc/passwd | more -4  # 定義屏幕大小爲4行,可通過相應操作來上下翻屏
     1    root:x:0:0:root:/root:/bin/bash
     2    bin:x:1:1:bin:/bin:/sbin/nologin
     3    daemon:x:2:2:daemon:/sbin:/sbin/nologin
     4    adm:x:3:4:adm:/var/adm:/sbin/nologin
[ root@vinsent ~ ]#cat -n /etc/passwd | more +/halt  # 從halt的行開始顯示

...skipping
     8    halt:x:7:0:halt:/sbin:/sbin/halt
     9    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10    operator:x:11:0:operator:/root:/sbin/nologin
    11    games:x:12:100:games:/usr/games:/sbin/nologin
    12    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    13    nobody:x:99:99:Nobody:/:/sbin/nologin
    14    systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
    15    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
...後面的省略...
[ root@vinsent ~ ]#
  • 說明:上述實驗中,先通過 " cat -n /etc/passwd "讓我們顯示的時候添加行號,這樣方便說明;在通過管道傳給 more 命令。這裏只做了一些選項的實驗,有興趣的可以把每個選項的都做做。


3、less命令

less 工具也是對文件或其它輸出進行分頁顯示的工具,應該說是linux正統查看文件內容的工具,功能極其強大。less 的用法比起 more 更加的有彈性。 在 more 的時候,我們並沒有辦法向前面翻, 只能往後面看,但若使用了 less 時,就可以使用 [pageup] [pagedown] 等按 鍵的功能來往前往後翻看文件,更容易用來查看一個文件的內容!除此之外,在 less 裏頭可以擁有更多的搜索功能,不止可以向下搜,也可以向上搜。

  • 格式:

    less [ OPTIONS  ] FILE...

  • 選項:

    -b <緩衝區大小> 設置緩衝區的大小

    -e  當文件顯示結束後,自動離開

    -f  強迫打開特殊文件,例如外圍設備代號、目錄和二進制文件

    -g  只標誌最後搜索的關鍵詞

    -i  忽略搜索時的大小寫

    -m  顯示類似more命令的百分比

    -N  顯示每行的行號

    -o <文件名> 將less 輸出的內容在指定文件中保存起來

    -Q  不使用警告音

    -s  顯示連續空行爲一行

    -S  行過長時間將超出部分捨棄

    -x <數字> 將“tab”鍵顯示爲規定的數字空格

  • 常見操作:和man命令中的操作一致;其實man命令的操作都來自less

    /字符串:向下搜索“字符串”的功能

    ?字符串:向上搜索“字符串”的功能

    n:重複前一個搜索(與 / 或 ? 有關)

    N:反向重複前一個搜索(與 / 或 ? 有關)

    b  向後翻一頁

    d  向後翻半頁

    h  顯示幫助界面

    Q  退出less 命令

    u  向前滾動半頁

    y  向前滾動一行

    空格鍵 滾動一行

    回車鍵 滾動一頁

    [pagedown]: 向下翻動一頁

    [pageup]:   向上翻動一頁

  • 實例

[ root@vinsent ~ ]#ps -ef | less -N         # -N 顯示行號;這裏表示顯示進程信息是加行號顯示 
      1 UID         PID   PPID  C STIME TTY          TIME CMD
      2 root          1      0  0 12:30 ?        00:00:00 /usr/lib/systemd/systemd --switche      
      3 root          2      0  0 12:30 ?        00:00:00 [kthreadd]
      4 root          3      2  0 12:30 ?        00:00:00 [ksoftirqd/0]
      5 root          6      2  0 12:30 ?        00:00:00 [kworker/u256:0]
      6 root          7      2  0 12:30 ?        00:00:00 [migration/0]
      7 root          8      2  0 12:30 ?        00:00:00 [rcu_bh]
      8 root          9      2  0 12:30 ?        00:00:00 [rcu_sched]
      9 root         10      2  0 12:30 ?        00:00:00 [watchdog/0]
     10 root         12      2  0 12:30 ?        00:00:00 [khelper]
     11 root         13      2  0 12:30 ?        00:00:00 [kdevtmpfs]
     12 root         14      2  0 12:30 ?        00:00:00 [netns]
     13 root         15      2  0 12:30 ?        00:00:00 [khungtaskd]
     14 root         16      2  0 12:30 ?        00:00:00 [writeback]
     15 root         17      2  0 12:30 ?        00:00:00 [kintegrityd]
...後面省略...
[ root@vinsent ~ ]#touch 1.txt         # 先創建兩個文件並寫入內容 ,
[ root@vinsent ~ ]#touch 2.txt
[ root@vinsent ~ ]#vim 1.txt 
[ root@vinsent ~ ]#vim 2.txt 
[ root@vinsent ~ ]#less 1.txt 2.txt    # less 瀏覽多個文件
dhgfas
khsdf
kjasdhfi

1.txt (file 1 of 2) (END) - Next: 2.txt  # 顯示了第一個文件的內容,並提示下一個文件Next: 2.txt
  • 說明:

    輸入 :n 後,切換到 2.txt

    輸入 :p 後,切換到 1.txt

  • 其他用法

    ctrl + F : 向前移動一屏

    ctrl + B :向後移動一屏

    ctrl + D:向前移動半屏

    ctrl + U: 向後移動半屏

    j : 向前移動一行

    k : 向後移動一行

    v : 使用配置的編輯器編輯當前文件

    h : 顯示 less 的幫助文檔

    &pattern : 僅顯示匹配模式的行,而不是整個文件


4、tail 和 head :

tail查看文件尾部;head用於查看文件頭部,默認爲前10行,也可認爲指定顯示的行數。

  • 格式:

    head [ OPTIONS ] FILE

    tail [ OPTIONS ] FILE

  • 選項:

    • head的選項:

      -c :打印每個文件的第一個K字節; 使用前導“ - ”,打印每個文件的最後一個K字節

      -n:打印第一個K行而不是前10個; 以' - '爲首,打印每個文件的最後K行

      -q:從不打印頭文件名

      -v:始終打印頭文件名

    • tail 的選項:

      -c:打印每個文件的第一個K字節; 使用前導“ - ”,打印每個文件的最後一個K字節

      -f:當文件增長時輸出附加數據;缺少的選項參數表示“描述符”

      -F:與--follow = name --retry一樣

      -n:打印第一個K行而不是前10個; 以' - '爲首,打印每個文件的最後K行

      -s:與-f,休息大概N秒(默認1.0)之間; 與inotify和--pid = P,檢查過程P至少每N秒一次

      -q:從不打印頭文件名

  • 實例:

[ root@vinsent ~ ]#head -n 5 /etc/passwd  # 查看前5行內容
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[ root@vinsent ~ ]#tail -n 5 /etc/passwd   # 查看後5行
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
vinsent:x:1000:1000:vinsent:/home/vinsent:/bin/bash
mage:x:1001:1001::/home/mage:/bin/bash
quagga:x:92:92:Quagga routing suite:/var/run/quagga:/sbin/nologin
[ root@vinsent ~ ]#
[ root@vinsent ~ ]#head -n 5 /etc/passwd | tail -1  # 只顯示第5行
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[ root@vinsent ~ ]#
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章