1. 程式人生 > >shell特殊字符,cut,sort,wc,uniq,tee,tr,split命令

shell特殊字符,cut,sort,wc,uniq,tee,tr,split命令

cutsortwcuniqtee

shell特殊字符
  • *任意個字符
  • ?任意一個字符
  • #註釋字符
  • \脫義字符
  • |管道符
  • $變量前綴,!$組合,正則裏面表示行尾
  • ;多條命令寫到一行,用分號分隔
  • ~用戶家目錄,正則表達式表示匹配符
  • &放到命令後面,會把命令丟到後臺
  • \>,>>,2>,2>>,&>(正確和錯誤重定向)
  • []指定字符中的一個,[0-9],[a-zA-Z],[abc]
  • ||當前面的命令成功不執行後面的,前面不成功才執行後面的
  • &&當前面的命令不成功不執行後面的,前面成功才執行後面哦

cut命令

  • 截取字符串
  • -d指定分隔符,-f指定截取指定的字段號,-c指定第幾個字符
    [root@aminglinux-02 ~]# cat /etc/passwd |head -2
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    [root@aminglinux-02 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1
    root
    bin
    [root@aminglinux-02 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2
    root:x
    bin:x
    [root@aminglinux-02 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3
    root:x:0
    bin:x:1
    [root@aminglinux-02 ~]# cat /etc/passwd |head -2 |cut -c 4
    t
    :

sort命令

  • ASCII碼排序,按字母順序排序
    [root@aminglinux-02 ~]# sort /etc/passwd
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    aming:x:1000:1000::/home/aming:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    chrony:x:997:995::/var/lib/chrony:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
  • -n以數字排序,字母和特殊符號默認為零
    [root@aminglinux-02 ~]# sort -n 1.txt
    [
    ]
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    halt:x:7:0:halt:/sbin:/sbin/halt
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    root:x:0:0:root:/root:/bin/bash
    *sdshdjhj
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    sync:x:5:0:sync:/sbin:/bin/sync
    22aaa
    2222222aaaaaa
    11134444
    222221111
    4234234252sdadhkajhkj
  • -r反序排列
    [root@aminglinux-02 ~]# sort -nr 1.txt
    4234234252sdadhkajhkj
    222221111
    11134444
    2222222aaaaaa
    22aaa
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    *sdshdjhj
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    halt:x:7:0:halt:/sbin:/sbin/halt
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    bin:x:1:1:bin:/bin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    }
  • -t分隔符,-kn1/-kn1,n2

wc命令

  • -l統計行數
    [root@aminglinux-02 ~]# wc -l 1.txt 
    23 1.txt
  • -m 統計字符數
  • -w 統計詞組數,用空白字符區分

uniq命令

  • 去重,-c統計行數幾行去重
    [root@aminglinux-02 ~]# sort 2.txt 
    1
    1
    123
    123
    2
    abc
    abc 111,222
    [root@aminglinux-02 ~]# sort 2.txt |uniq
    1
    123
    2
    abc
    abc 111,222
    [root@aminglinux-02 ~]# sort 2.txt |uniq -c
      1 
      2 1
      2 123
      1 2
      1 abc
      1 abc 111,222

tee命令

  • 和>類似,重定向的同時還在屏幕顯示
    [root@aminglinux-02 ~]# sort 2.txt |uniq -c > a.txt 
    [root@aminglinux-02 ~]# sort 2.txt |uniq -c |tee a.txt 
    2 1
    2 123
    1 2
    1 abc
    1 abc 111,222
  • 加-a和>>類似,追加並顯示追加的內容

tr替換字符

[root@aminglinux-02 ~]# echo "aminglinux" |tr ‘[al]‘ ‘[AL]‘
AmingLinux
[root@aminglinux-02 ~]# echo "aminglinux" |tr ‘[a-z]‘ ‘[A-Z]‘
AMINGLINUX

split命令

  • -b以文件大小切割,後面加文件名,還可以在後面指定切割後的文件名前綴
  • -l以行數大小切割,後面加文件名,還可以在後面指定切割後的文件名前綴
    [root@aminglinux-02 test]# split -b 100k q.txt abc.
    [root@aminglinux-02 test]# ls
    abc.aa  abc.ab  abc.ac  q.txt
    [root@aminglinux-02 test]# split -l 1000 q.txt abc.
    [root@aminglinux-02 test]# ls
    abc.aa  abc.ab  abc.ac  abc.ad  abc.ae  abc.af  abc.ag  q.txt

測試

shell特殊字符,cut,sort,wc,uniq,tee,tr,split命令