文本處理工具

文本查看

cat

查看文件的內(nèi)容,常用選項(xiàng):

  • -E:查看行結(jié)束符$
  • -n:對(duì)顯出的每一行進(jìn)行編號(hào)
  • -A:顯示所有控制符
  • -b:對(duì)非空行編號(hào)
  • -s:壓縮連續(xù)的空行成一行
    其兄弟命令tac,可以倒著查看文件,也就是從尾行開始查看

rev

將一行內(nèi)容倒過來

[root@centos6 ~]# echo "1234567890" |rev
0987654321

more

分頁查看文件,不支持man的快捷鍵

less

一頁一頁的查看文件,使用的時(shí)man的分頁器,支持man的快捷鍵

head

從頭部開始查看,默認(rèn)顯示前10行,常用選項(xiàng):

  • -c:指定獲取前多少字節(jié)
  • -n:指定獲取前多少行
  • -#:指定獲取前#行
[root@centos6 ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@centos6 ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

tail

從尾部開始查看,默認(rèn)顯示后10行,常用選項(xiàng):

  • -c:指定獲取后多少字節(jié)
  • -n:指定獲取后多少行
  • -#:指定獲取后#行
  • -f:跟蹤文件描述符顯示新追加的內(nèi)容,常用于日志監(jiān)控,--follow=descriptor
  • -F:跟蹤文件名,相當(dāng)于--follow=name --retry

tailf

相當(dāng)于tail -f -10,當(dāng)文件不增長時(shí)不在訪問文件,可以減少磁盤的IO

cut

顯示文件或stdin數(shù)據(jù)的指定列,常用選項(xiàng):

  • -d delimiter:指定分隔符,默認(rèn)是tab
  • -f fileds:取去指定的列
    • #:第#個(gè)列
    • #,#,#:1,3,5列出135列
    • #-#:3-6列出3456列
  • -c:按字符分割
  • --output-delimiter=string:指定輸出分隔符
[root@centos6 ~]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@centos6 ~]# head -1 /etc/passwd |cut -d: -f1,3-6 --output-delimiter=/
root/0/0/root//root

[root@centos6 ~]# head -1 /etc/passwd |cut -c1-5
root:

paste

合并兩個(gè)文件同行號(hào)的列到一行,常用選項(xiàng):

  • -d:指定分隔符,默認(rèn)是tab
  • -s:將文件多行變成一行
[root@centos6 app]# cat a
a
b
c
[root@centos6 app]# cat b
1
2
3
[root@centos6 app]# paste a b
a   1
b   2
c   3
[root@centos6 app]# paste -d : a b
a:1
b:2
c:3
[root@centos6 app]# paste -s a b
a   b   c
1   2   3
[root@centos6 app]# paste -s a 
a   b   c

文本分析

wc

默認(rèn)顯示行數(shù),字?jǐn)?shù)(不包含符號(hào)),字節(jié)數(shù)和文件名,常用選項(xiàng):

  • -l:只計(jì)行數(shù)
  • -w:只計(jì)單詞數(shù)
  • -c:只計(jì)字節(jié)數(shù)
  • -m:只計(jì)字符數(shù)
  • -L:顯示文件中最長行的長度和文件名
[root@centos6 app]# cat a
nihao
helloword
[root@centos6 app]# cat a|wc
      2       2      16
[root@centos6 app]# cat a
nihao
helloword
[root@centos6 app]# wc a
 2  2 16 a
[root@centos6 app]# wc -L a
9 a
[root@centos6 app]# wc -L /etc/passwd
79 /etc/passwd

sort

把整理過的文本顯示在stdout,不改變?cè)嘉募J(rèn)排序方式受LC_COLLATE影響,按照UTF-8編碼排序,可以使用export LC_COLLATE=C改為按照ASCII編碼來排序,常用選項(xiàng):

  • -n:按數(shù)字大小排序
  • -r:倒序
  • -f:忽略字母大小寫
  • -u:刪除輸出中的重復(fù)行
  • -t character:指定分隔符
  • -k number:指定第幾列
[root@centos6 app]# tail /etc/passwd|sort -t: -k3 -n
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

uniq

從輸入中刪除前后相接的重復(fù)的行,一般配合sort先排序一下,常用選項(xiàng):

  • -c:顯示每行重復(fù)的次數(shù)
  • -d:僅顯示重復(fù)過的行
  • -u:僅顯示不重復(fù)的行

diff和patch

  1. diff file.old file.new:比較兩個(gè)文件不同之處
  2. diff -u file.old dile.new > file.patch:導(dǎo)出補(bǔ)丁文件
  3. patch -b file.old file.patch:將補(bǔ)丁打入舊文件
[root@centos6 app]# cat a.old
nihao
helloword
[root@centos6 app]# cat a.new
nihao
5
2
[root@centos6 app]# diff a.old a.new
2c2,3
< helloword
---
> 5
> 2
[root@centos6 app]# diff -u a.old a.new > file.patch
[root@centos6 app]# ls
a.new  a.old  file.patch
[root@centos6 app]# patch -b a.old file.patch 
patching file a.old
[root@centos6 app]# cat a.old
nihao
5
2

練習(xí)

  1. 查出用戶UID最大值的用戶名、UID及shell類型

    [root@centos6 app]# cat /etc/passwd|sort -t: -k3 -n |tail -1 |cut -d: -f1,3,7
    nfsnobody:65534:/sbin/nologin
    
  2. 查出/tmp的權(quán)限,以數(shù)字方式顯示

    [root@centos6 app]# stat /tmp/
      File: `/tmp/'
      Size: 4096        Blocks: 8          IO Block: 4096   directory
    Device: 802h/2050d  Inode: 262145      Links: 21
    Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2018-05-25 14:24:58.846543054 +0800
    Modify: 2018-05-25 19:28:20.935536819 +0800
    Change: 2018-05-25 19:28:20.935536819 +0800
    [root@centos6 app]# stat /tmp/|head -4|tail -1|tr "(" /|cut -d/ -f2
    1777
    
  3. 統(tǒng)計(jì)當(dāng)前連接本機(jī)的每個(gè)遠(yuǎn)程主機(jī)IP的連接數(shù),并按從大到小排序

    [root@centos6 app]# cat /var/log/httpd/access_log |cut -d- -f1|sort |uniq -c |sort -t' ' -k1 -nr
      14966 172.18.118.213 
       2246 172.18.118.190 
          8 172.18.118.140 
          2 172.18.118.147
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 抽取文本的工具 2.分析文本的工具 3.Linux文本處理三劍客 4. 文件查看命令:cat, tac,re...
    尛尛大尹閱讀 537評(píng)論 0 0
  • 一 文件查看cat -E: 顯示行結(jié)束符$創(chuàng)建一個(gè)文件——nano f1,在文本編輯中在b和d之間補(bǔ)一個(gè)tab鍵[...
    楠人幫閱讀 377評(píng)論 0 1
  • Linux一切皆文件,因此對(duì)文本就會(huì)頻繁操作,增刪改查,也就有對(duì)文本處理的各種工具,下面介紹常用工具,以及各工具常...
    靜默閱讀 1,015評(píng)論 0 0
  • 伴隨著六年的時(shí)光 她 悄悄地來到了我們的 身邊 春天綻放的花蕊 夏季里更加明媚 秋天的落葉 冬天的風(fēng)雪 我們都一起...
    親愛的喵寶閱讀 300評(píng)論 0 0
  • 黃巢說:“待到秋來九月八,我花開來百花殺”。 如果你不知道黃巢是誰,可以百度腦補(bǔ)一下。 要是你沒聽過這句詩,后兩句...
    吾有三寶閱讀 625評(píng)論 1 2

友情鏈接更多精彩內(nèi)容