5-5 8 特殊符號 cut sort wc uniq tee tr split

8.10 shell特殊符號cut命令

特殊符號linux

  • 「*」 表明零個或多個字符
  • 「?」 表明一個字符
  • 「#」 註釋符號
  • 「\」 脫意符號
  • 「|」 管道符

cut用法

[root@lixiang01 ~]# cat /etc/passwd |head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@lixiang01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,5
root:root
bin:bin
  • cut分割,用來顯示行中的指定部分
    • -d 斷定分隔符
    • -f 要那段
    • -c指定第幾個字符

8.11 sort_wc_uniq命令

sort 用法

按字符編碼表排序shell

[root@lixiang01 ~]# head /etc/passwd > 1.txt
[root@lixiang01 ~]# vi 1.txt
[root@lixiang01 ~]# sort 1.txt
<
>
@#
2112
222
3421
432
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
{e33
]f
*%$#fs
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
perator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
sfae
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sjfoen
sync:x:5:0:sync:/sbin:/bin/sync

按字符的數值排序bash

[root@lixiang01 ~]# 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
{e33
]f
*%$#fs
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
perator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
sfae
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sjfoen
sync:x:5:0:sync:/sbin:/bin/sync
222
432
2112
3421

倒置參數:-rui

[root@lixiang01 ~]# sort -n -r 1.txt
3421
2112
432
222
sync:x:5:0:sync:/sbin:/bin/sync
sjfoen
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sfae
root:x:0:0:root:/root:/bin/bash
perator: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
*%$#fs
]f
{e33
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
@#
>
<
  • sort 排序,將文件進行排序,並將排序結果標準輸出(按ASCⅡ排序須要調整/etc/)
    • -n 以數字排序
    • -r 反序
    • -t分隔符
    • -kn1/-kn1,n2 指定段排序

wc 用法

[root@lixiang01 ~]# 
[root@lixiang01 ~]# wc -m 1.txt 字符數
436 1.txt
[root@lixiang01 ~]# wc -w 1.txt 詞彙數(只要不空格就算一個詞)
22 1.txt
[root@lixiang01 ~]# wc -l 1.txt 行數
22 1.txt
  • wc 統計,統計並打印換行符,詞數,字符數
    • -l 統計行數
    • -m 統計字符數
    • -w 統計詞

uniq用法

[root@lixiang01 ~]# vi 2.txt
[root@lixiang01 ~]# sort 2.txt |uniq -c
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
  • uniq 去重,
    • -c顯示重複數
    • 單獨使用只能去重相鄰行,經常與sort結合使用

8.12 tee_tr_split命令

tee用法

[root@lixiang01 ~]# >a.txt
[root@lixiang01 ~]# cat a.txt
[root@lixiang01 ~]# sort 2.txt |uniq -c |tee a.txt
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
[root@lixiang01 ~]# cat a.txt
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
[root@lixiang01 ~]# sort 2.txt |uniq -c |tee -a a.txt
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
[root@lixiang01 ~]# cat a.txt
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
      3 1
      2 112
      2 123
      1 2
      2 33
      3 4
      2 5
      2 6
  • tee, 和>相似,重定向的同時還在屏幕顯示
    • -a 相似追加劇定向

tr 用法

[root@lixiang01 ~]# echo "axianglinux" |tr '[al]' '[AL]'
AxiAngLinux
  • tr替換字符,tr'a''b',大小寫替換tr‘[a-z]''[A-Z]'

split用法

[root@lixiang01 test]# find /etc/ -type f -name "*conf" -exec cat {} >> a.txt \;
[root@lixiang01 test]# split -b 10000 a.txt
[root@lixiang01 test]# ls
a.txt  xab  xad  xaf  xah  xaj  xal  xan  xap
xaa    xac  xae  xag  xai  xak  xam  xao  xaq
[root@lixiang01 test]# cat a.txt >> b.txt
[root@lixiang01 test]# cat a.txt >> b.txt
[root@lixiang01 test]# rm -f x*
[root@lixiang01 test]# rm -f a*
[root@lixiang01 test]# wc -l b.txt
8662 b.txt
[root@lixiang01 test]# split -l 1000 b.txt  
[root@lixiang01 test]# ls
b.txt  xaa  xab  xac  xad  xae  xaf  xag  xah  xai
[root@lixiang01 test]# wc -l *
  8662 b.txt
  1000 xaa
  1000 xab
  1000 xac
  1000 xad
  1000 xae
  1000 xaf
  1000 xag
  1000 xah
   662 xai
 17324 總用量
[root@lixiang01 test]#
  • split切割,能夠將一個大文件分割成不少個小文件
    • -b大小(默認單位字節),
    • -l行數

8.13 shell特殊符號下

  • $ 變量前綴,!$組合,正則裏面表示行尾
  • ; 多條命令寫到一行,用分號分割,能夠逐個執行並按順序輸出
  • ~ 用戶家目錄,會把命令丟到後臺
  • & 放到命令後面,會把命令丟到後臺
  • > >> 2> 2>> &> //正確重定向 正確追加 錯誤重定向 錯誤追加 不區分重定向
  • []指定字符中的一個,[0-9],[a-zA-Z],[abc]
  • ||和&&,用於命令之間,

||和&&用法

||表示你不行我來就來,&&表示你先來,能夠我就上編碼

[root@lixiang01 ~]# ls 1a.txt ; wc -l 2.txt
ls: 沒法訪問1a.txt: 沒有那個文件或目錄
17 2.txt
[root@lixiang01 ~]# ls 1a.txt || wc -l 2.txt //前面命令不成功,繼續
ls: 沒法訪問1a.txt: 沒有那個文件或目錄
17 2.txt
[root@lixiang01 ~]# ls 1.txt || wc -l 2.txt //前面命令成功則中止
1.txt
[root@lixiang01 ~]# ls 1a.txt && wc -l 2.txt //前面命令不成功,中止
ls: 沒法訪問1a.txt: 沒有那個文件或目錄
[root@lixiang01 ~]# ls 1.txt && wc -l 2.txt //前面命令成功,繼續
1.txt
17 2.txt

相關測驗題目:http://ask.apelearn.com/question/5437.net

擴展

  1. source exec 區別 http://alsww.blog.51cto.com/2001924/1113112
  2. Linux特殊符號大全http://ask.apelearn.com/question/7720
  3. sort並未按ASCII排序 http://blog.csdn.net/zenghui08/article/details/7938975
相關文章
相關標籤/搜索