1. 程式人生 > >linux的cut、sort_wc_uniq、tee_tr_split命令及一些特殊符號介紹

linux的cut、sort_wc_uniq、tee_tr_split命令及一些特殊符號介紹

linux cut sort wc uniq tee

shell特殊符號cut命令:


1、* 任意個任意字符(這是一個通配符)

2、? 任意一個字符

3、 # 註釋字符

4、 \ 脫義字符

5、 | 管道符


幾個和管道有關的命令:


1、cut 分割,-d 分隔符 -f 指定段號 -c 指定第幾個字符,

示例:

[root@aminglinux-01 ~]# cat /etc/passwd |head
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@aminglinux-01 ~]# cat /etc/passwd |head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@aminglinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1
root
bin
[root@aminglinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2
root:x
bin:x
[root@aminglinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3
root:x:0
bin:x:1
[root@aminglinux-01 ~]# cat /etc/passwd |head -2 |cut -c 4
t
:


sort_wc_uniq命令:


2、sort 排序, -n 以數字排序 -r 反序 -t 分隔符 -kn1/-kn1,n2

示例如下:

root@aminglinux-01 ~]# sort /etc/passwd   (按照ID號順序排序,數字、字母等)
adm:x:3:4:adm:/var/adm:/sbin/nologin
aminglinux:x:1002:1002::/home/aminglinux:/bin/bash
aming:x:1000:1005::/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
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin

3、 wc -l 統計行數 -m 統計字符數 -w 統計詞

示例:

[root@aminglinux-01 ~]# wc -l 1.txt
22 1.txt
[root@aminglinux-01 ~]# wc -m 1.txt
450 1.txt
[root@aminglinux-01 ~]# wc -m 2.txt
0 2.txt
[root@aminglinux-01 ~]# wc -w 2.txt
0 2.txt

4、 uniq 去重, -c統計行數

單獨使用uniq命令去重,只有在列表相同的上下序列才去重,示例:

[root@aminglinux-01 ~]# vim 2.txt
[root@aminglinux-01 ~]# cat 2.txt
123
abc 111,222
123
abc
1
2
1
[root@aminglinux-01 ~]# uniq 2.txt   //沒有序列相同的,無法去重。
123
abc 111,222
123
abc
1
2
1
[root@aminglinux-01 ~]# vim 2.txt   //更改數字序列
[root@aminglinux-01 ~]# cat 2.txt
123
abc 111,222
123
abc
1
1
2
[root@aminglinux-01 ~]# uniq 2.txt      //去重相同的數字
123
abc 111,222
123
abc
1
2

結合sort命令使用先排序,然後去重,計算重復次數,示例:

[root@aminglinux-01 ~]# sort 2.txt         //自動排序2.txt裏面文字列表
1
1
123
123
2
abc
abc 111,222
[root@aminglinux-01 ~]# sort 2.txt |uniq     //去重
1
123
2
abc
abc 111,222
[root@aminglinux-01 ~]# sort 2.txt |uniq -c  //計算重復次數
2 1
2 123
1 2
1 abc
1 abc 111,222


tee_tr_split命令:


5、 tee 和>類似,重定向的同時還在屏幕顯示

示例:

[root@aminglinux-01 ~]# cat a.txt
[root@aminglinux-01 ~]# sort 2.txt |uniq -c |tee a.txt
2 1
2 123
1 2
1 abc
1 abc 111,222
[root@aminglinux-01 ~]# cat a.txt
2 1
2 123
1 2
1 abc
1 abc 111,222
[root@aminglinux-01 ~]# sort 2.txt |uniq -c |tee -a a.txt    //tee加-a是追加
2 1
2 123
1 2
1 abc
1 abc 111,222
[root@aminglinux-01 ~]# cat a.txt
2 1
2 123
1 2
1 abc
1 abc 111,222
2 1
2 123
1 2
1 abc
1 abc 111,222

6、tr 替換字符,tr ‘a‘ ‘b‘,大小寫替換tr ‘[a-z]‘ ‘[A-Z]‘

示例:

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

7、 split 切割,-b大小(默認單位字節),-l行數 (切割日誌,兩種用法)

使用命令:

split -b 1000m bigfile
split -l   1000    bigfile

示例:

[root@aminglinux-01 test]# ls
a.txt
[root@aminglinux-01 test]# split -b 100k a.txt
[root@aminglinux-01 test]# ls
a.txt  xaa  xab  xac
[root@aminglinux-01 test]# du -sh *
256K	a.txt
100K	xaa
100K	xab
52K	xac
[root@aminglinux-01 test]# rm -f x*
[root@aminglinux-01 test]# split -b 100k a.txt abc
[root@aminglinux-01 test]# ls
abcaa  abcab  abcac  a.txt
[root@aminglinux-01 test]# split -b 100k a.txt abc.
[root@aminglinux-01 test]# ls
abcaa  abc.aa  abcab  abc.ab  abcac  abc.ac  a.txt
[root@aminglinux-01 test]# rm -f abc*
[root@aminglinux-01 test]# split -l 1000 a.txt
[root@aminglinux-01 test]# ls -l
總用量 516
-rw-r--r--. 1 root root 257421 11月 17 20:00 a.txt
-rw-r--r--. 1 root root  42094 11月 17 20:04 xaa
-rw-r--r--. 1 root root  44424 11月 17 20:04 xab
-rw-r--r--. 1 root root  40244 11月 17 20:04 xac
-rw-r--r--. 1 root root  40202 11月 17 20:04 xad
-rw-r--r--. 1 root root  34871 11月 17 20:04 xae
-rw-r--r--. 1 root root  39403 11月 17 20:04 xaf
-rw-r--r--. 1 root root  16183 11月 17 20:04 xag
[root@aminglinux-01 test]# wc -l *
6495 a.txt
1000 xaa
1000 xab
1000 xac
1000 xad
1000 xae
1000 xaf
495 xag
12990 總用量


shell特殊符號下:


1、$ 變量前綴,!$組合,正則裏面表示行尾

2、;多條命令寫到一行,用分號分割

[root@aminglinux-01 ~]# ls 1.txt ; wc -l 2.txt
1.txt
7 2.txt

3、 ~ 用戶家目錄,後面正則表達式表示匹配符

4、& 放到命令後面,會把命令丟到後臺

5、> >> 2> 2>> &>


> :正確重定向,會把之前的文件覆蓋掉。

>> :追加重定向,追加內容正確輸出。

2> :錯誤重定向

2>>:追加錯誤重定向

&> :表示正確與錯誤輸出重定向


6、 [ ] 指定字符中的一個,如[0-9],[a-zA-Z],[abc]

7、|| 和 && ,用於命令之間。

|| :表示或者的意思,當同時使用執行兩條命令時,如果第一條命令執行不成功,那就執行第二條命令,如果第一條命令執行成功,那就不執行第二條命令,示例如下:

[root@aminglinux-01 ~]# ls 1a.txt || wc -l 2.txt
ls: 無法訪問1a.txt: 沒有那個文件或目錄
7 2.txt
[root@aminglinux-01 ~]# ls 1.txt || wc -l 2.txt
1.txt

&&:當同時使用執行兩條命令時,如果前面命令執行成功才執行後面的命令,否則不執行。

示例如下:

[root@aminglinux-01 ~]# ls 1.txt && wc -l 2.txt
1.txt
7 2.txt
[root@aminglinux-01 ~]# ls 1a.txt && wc -l 2.txt
ls: 無法訪問1a.txt: 沒有那個文件或目錄


實驗:

[root@aminglinux-01 ~]# ls
111  1_heard.txt.bak  1.txt      234    3.txt  aa.txt  anaconda-ks.cfg  test
123  1_sorft.txt.bak  1.txt.bak  2.txt  456    aming2  bb.txt           安諾雲智平臺介紹(PPT模板).pptx
[root@aminglinux-01 ~]# [ -d aminglinux ] || mkdir aminglinux
[root@aminglinux-01 ~]# ls
111  1_heard.txt.bak  1.txt      234    3.txt  aa.txt  aminglinux       bb.txt  安諾雲智平臺介紹(PPT模板).pptx
123  1_sorft.txt.bak  1.txt.bak  2.txt  456    aming2  anaconda-ks.cfg  test
[root@aminglinux-01 ~]# [ -d aminglinux ] && mkdir aminglinux
mkdir: 無法創建目錄"aminglinux": 文件已存在
[root@aminglinux-01 ~]# [ -d aminglinux ] || mkdir aminglinux

解釋:

[ -d aminglinux ]:判斷一個目錄是否存在。


本文出自 “Gary博客” 博客,請務必保留此出處http://taoxie.blog.51cto.com/10245493/1982893

linux的cut、sort_wc_uniq、tee_tr_split命令及一些特殊符號介紹