linux的cut、sort_wc_uniq、tee_tr_split命令及一些特殊符號介紹
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命令及一些特殊符號介紹