shell特殊符號cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符號下

擴展:正則表達式

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/7938975shell

shell特殊符號cut命令

  • cut 分割,-d 分隔符 -f 指定段號 -c 指定第幾個字符
  • sort 排序, -n 以數字排序 -r 反序 -t 分隔符 -kn1/-kn1,n2
  • wc -l 統計行數 -m 統計字符數 -w 統計詞
  • uniq 去重, -c統計行數
  • tee 和>相似,重定向的同時還在屏幕顯示
  • tr 替換字符,tr 'a' 'b',大小寫替換tr '[a-z]' '[A-Z]'
  • split 切割,-b大小(默認單位字節),-l行數

cut命令

  • cut命令用來截取某個字符串
  • 格式:cut –d 「分割符」 文件名
  • -d:後面跟分割字符,分割字符用雙引號括起來;
  • -f:後面跟接第幾段字符串
  • -c:後面接第幾個字符
  1. 截取passwd第1到第3段
[root@yong-02 test]# head -3 passwd |cut -d ":" -f 1-3
root:x:0
bin:x:1
daemon:x:2
  1. 截取passwd第1段和第3段
[root@yong-02 test]# head -3 passwd |cut -d ":" -f 1,3
root:0
bin:1
daemon:2
  1. 截取第3個字符
[root@yong-02 test]# head -3 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@yong-02 test]# head -3 passwd |cut -c 3
o
n
e
  1. 截取第2個字符到第6個字符
[root@yong-02 test]# head -3 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@yong-02 test]# head -3 passwd |cut -c 2-6
oot:x
in:x:
aemon

sort命令

  • sort命令用作排序,格式sort [-t 分割符] [-kn1,n2] [-nur],n1,n2指的是數字
  • -t 分割符
  • -k 按第幾列排序;區間範圍用逗號-k3,5
  • -n 按數字排序
  • -r 反序排序,按從打到小排序
  • -u 去重複
  • -un 字母開頭的會識別成重複內容,如skj1 a weotj 都會認爲是重複內容,只顯示數字內容
  1. sort 不加任何選項,從首行字符向後,依次按ASCII碼值進行比較,按升序排序
[root@yong-02 test]# vim passwd 
adf
123
111
!!!
!jk
lfas
<::
>,
%^
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  1. 以數字排序
[root@yong-02 test]# sort -n passwd 
<::
>,
!!!
%^
adf
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
!jk
lfas
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
111
123
  • 注意:若是有字母或者特殊符號,在數字排序中,都默認當作0.
  1. 反向排序
[root@yong-02 test]# sort -nr passwd 
123
111
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
root:x:0:0:root:/root:/bin/bash
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
lfas
!jk
halt:x:7:0:halt:/sbin:/sbin/halt
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
adf
%^
!!!
>,
<::
  1. 去重複,這裏把字母都當作了0,而後去重複。
[root@yong-02 test]# sort -nu passwd 
adf
111
123

wc命令

  • wc命令用於統計文檔的行數,字符數,單詞數。
  • -l 統計行數
  • -m統計字符數
  • -w統計單詞數
  1. 查看文件1.txt 行數
[root@yong-02 test]# cat 1.txt
abcd
1abcd
123
111
121
[root@yong-02 test]# wc -l 1.txt 
5 1.txt
  1. 查看文件1.txt字符有多少個,$爲行尾字符
[root@yong-02 test]# cat -A 1.txt
abcd$
1abcd$
123$
111$
121$
[root@yong-02 test]# wc -m 1.txt 
23 1.txt
  1. -w統計單詞,它是以空格或者空白字符來分割。
[root@yong-02 test]# cat 1.txt
abcd
1abcd
123
111
121
[root@yong-02 test]# wc -w 1.txt 
5 1.txt
  1. 若是wc後面不加任何選項,直接跟文檔,則會把行數,單詞數,字符數依次輸出。
[root@yong-02 test]# cat 1.txt
abcd
1abcd
123
111
121
[root@yong-02 test]# wc 1.txt 
 5  5 23 1.txt

uniq命令

  • uniq命令用來刪除重複的行,一般和sort連在一塊兒使用
  • -c選項比較經常使用,它表示統計重複的行數,並把行數寫在前面
[root@yong-02 test]# cat 2.txt 
111
222
123
111
222
adf
123
111
!!!
!jk
lfas
<::
>,
%^
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  1. 先排序而後刪除重複行
[root@yong-02 test]# sort 2.txt |uniq -c
      1 <::
      1 >,
      1 !!!
      1 %^
      3 111
      2 123
      2 222
      1 adf
      1 bin:x:1:1:bin:/bin:/sbin/nologin
      1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
      1 !jk
      1 lfas
      1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
      1 root:x:0:0:root:/root:/bin/bash
      3 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

tee命令

  • tee命令後面文件名,其做用相似於重定向>;可是它比重定向多一個顯示在屏幕上的功能;
[root@yong-02 test]# cat 1.txt  > a.txt 
[root@yong-02 test]# cat 1.txt |tee a.txt 
abcd
1abcd
123
111
121
  1. tee –a 至關於追加劇定向>>;它多了一個顯示在屏幕上的功能
[root@yong-02 test]# cat 1.txt |tee -a a.txt 
abcd
1abcd
123
111
121
[root@yong-02 test]# cat a.txt 
abcd
1abcd
123
111
121
abcd
1abcd
123
111
121

命令tr

  • tr命令用於替換字符
[root@yong-02 test]# cat 1.txt |tr 'a' 'A'
Abcd
1Abcd
123
111
121
[root@yong-02 test]# cat 1.txt |tr 'a-z' 'A-Z' ##最好'[a-z]' '[A-Z]'
ABCD
1ABCD
123
111
121

split命令

  • split 用於分割文檔
  • split -l 按行來分割
  • split -b 按大小來分割
  1. split -b 按大小來分割
[root@yong-02 test]# find /etc/ -type f -name "*.conf" -exec cat {} >test.txt \;
[root@yong-02 test]# du -sh test.txt 
240K	test.txt
[root@yong-02 test]# split -b 100k test.txt 
[root@yong-02 test]# ls
test.txt  xab   xaa   xac
  1. split –l 按行來分割
[root@yong-02 test]# wc -l test.txt 
6082 test.txt
[root@yong-02 test]# split -l 1000 test.txt 
[root@yong-02 test]# ls
test.txt  xab  xad  xaf
xaa       xac  xae  xag
  • split 後面若是不指定文件名,則會以xaa,xab ……這樣的文件名來存取切割後的文件
  1. 指定目標分割文件名 爲abc.
[root@yong-02 test]# split -l 1000 test.txt abc.
[root@yong-02 test]# ls
 abc.ab  abc.ad  abc.af  test.txt
 abc.aa  abc.ac  abc.ae  abc.ag

特殊符號

  • $ 變量前綴,!$組合,正則裏面表示行尾
  • ;多條命令寫到一行,用分號分割
  • ~ 用戶家目錄,後面正則表達式表示匹配符
  • & 放到命令後面,會把命令丟到後臺
  • 重定向 > 追加劇定向>> 錯誤重定向2> 錯誤追加劇定向2>> 正確和錯誤重定向&>
  • [ ] 指定字符中的一個,[0-9],[a-zA-Z],[abc]
  • || 和 && ,用於命令之間
  • $:能夠做爲變量前面的標示符,能夠和!結合起來使用,在正則裏面表示行尾
[root@yong-02 test]# ls /tmp/gzip/
1.txt  2.txt.zip  4.txt  test  yyl.tar      yyl.tar.gz  yyl.zip
2.txt  3.txt      5.txt  yyl   yyl.tar.bz2  yyl.tar.xz
[root@yong-02 test]# ls !$
ls /tmp/gzip/
1.txt  2.txt.zip  4.txt  test  yyl.tar      yyl.tar.gz  yyl.zip
2.txt  3.txt      5.txt  yyl   yyl.tar.bz2  yyl.tar.xz
  • ; 多條命令寫在一行,用;分割
[root@yong-02 test]# cat 1.txt ;cat a.txt
abcd
1abcd
123
111
121
abcd
  • ~ 家目錄,後面正則表示匹配符vim

  • 重定向(正確) > ,會覆蓋之前的內容bash

[root@yong-02 test]# echo "abcdefg" >a.txt
[root@yong-02 test]# cat a.txt 
abcdefg
  • 追加劇定向(正確)>>
[root@yong-02 test]# echo "1234" >>a.txt
[root@yong-02 test]# cat a.txt 
abcdefg
1234
  • 錯誤重定向 2>
[root@yong-02 test]# cat c.txt 2>a.txt
[root@yong-02 test]# cat a.txt 
cat: c.txt: 沒有那個文件或目錄
  • 錯誤追加劇定向 2>>
[root@yong-02 test]# cat c.txt 2>>a.txt
[root@yong-02 test]# cat a.txt 
cat: c.txt: 沒有那個文件或目錄
cat: c.txt: 沒有那個文件或目錄
  • &> 錯誤和正確都重定向到某個文件裏面。
[root@yong-02 test]# cat 1.txt c.txt &>a.txt
[root@yong-02 test]# cat a.txt
abcd
1abcd
123
111
121
cat: c.txt: 沒有那個文件或目錄
  • shell中的連接符號 && || ;
  • && 前面命令執行成功後,纔會執行後面的命令;若是前面執行不成功,後面命令不執行

  • || 前面的命令執行不成功,纔會執行後面的命令;若是前面命令執行成功,後面命令不執行

  • ; 左邊的命令成功與否,後邊的命令都會執行

相關文章
相關標籤/搜索