2019獨角獸企業重金招聘Python工程師標準>>>
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到第3段[root@linux-128 ~]# head -5 1.txt |cut -d ":" -f 1-3
root:x:0
bin:x:1
daemon:x:2
adm:x:3
lp:x:4
截取第1段和第3段[root@linux-128 ~]# head -5 1.txt |cut -d ":" -f 1,3
root:0
bin:1
daemon:2
adm:3
lp:4
截取第2個字符[root@linux-128 ~]# head -5 1.txt |cut -c 2
o
i
a
d
p
截取第2個字符到第5個字符[root@linux-128 ~]# head -5 1.txt |cut -c 2-5
oot:
in:x
aemo
dm:x
p:x:
sort命令
- sort命令用做排序,格式sort [-t 分割符] [-kn1,n2] [-nur],n1,n2指的是數字
- -t 分割符
- -k 按第幾列排序;區間范圍用逗號-k3,5
- -n 按數字排序
- -r 反序排序,按從打到小排序
- -u 去重復
- -un 字母開頭的會識別成重復內容,如skj1 a weotj 都會認為是重復內容,只顯示數字內容
sort 不加任何選項,從首行字符向后,依次按ASCII碼值進行比較,按升序排序[root@linux-128 ~]# vim 2.txt
111
111
111
111aaa
121
!@#$@123
1asd
abab
abab
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
以數字排序[root@linux-128 ~]# sort -n 2.txt
!@#$@123
abab
abab
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
1asd
111
111
111
111aaa
121
- 注意:如果有字母或者特殊符號,在數字排序中,都默認看成0.
反向排序[root@linux-128 ~]# sort -nr 2.txt
121
111aaa
111
111
111
1asd
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
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
abab
abab
!@#$@123
去重復,這里把字母都看成了0,然后去重復。[root@linux-128 ~]# sort -nu 2.txt
abab
1asd
111
121
wc命令
- wc命令用于統計文檔的行數,字符數,單詞數。
- -l 統計行數
- -m統計字符數
- -w統計單詞數
查看文件3.txt 行數[root@linux-128 ~]# cat 3.txt
abab
1asd
111
121
[root@linux-128 ~]# wc -l 3.txt
4 3.txt
查看文件3.txt字符有多少個,$為行尾字符[root@linux-128 ~]# cat -A 3.txt
abab$
1asd$
111$
121$
[root@linux-128 ~]# wc -m 3.txt
18 3.txt
-w統計單詞,它是以空格或者空白字符來分割。[root@linux-128 ~]# cat 3.txt
abab
1asd
111
121
[root@linux-128 ~]# wc -w 3.txt
4 3.txt
如果wc后面不加任何選項,直接跟文檔,則會把行數,單詞數,字符數依次輸出。[root@linux-128 ~]# wc 3.txt4 4 18 3.txt
uniq命令
- uniq命令用來刪除重復的行,通常和sort連在一起使用
- -c選項比較常用,它表示統計重復的行數,并把行數寫在前面
[root@linux-128 ~]# sort 2.txt
111
111
111
111aaa
121
!@#$@123
1asd
abab
abab
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
先排序然后刪除重復行[root@linux-128 ~]# sort 2.txt |uniq -c3 1111 111aaa1 1211 !@#$@1231 1asd2 abab1 adm:x:3:4:adm:/var/adm:/sbin/nologin1 bin:x:1:1:bin:/bin:/sbin/nologin1 daemon:x:2:2:daemon:/sbin:/sbin/nologin1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin1 root:x:0:0:root:/root:/bin/bash[root@linux-128 ~]# sort 2.txt |uniq
111
111aaa
121
!@#$@123
1asd
abab
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
tee命令
- tee命令后面文件名,其作用類似于重定向>;但是它比重定向多一個顯示在屏幕上的功能;
[root@linux-128 ~]# cat 3.txt >4.txt
[root@linux-128 ~]# cat 3.txt |tee 4.txt
abab
1asd
111
121
tee –a 相當于追加重定向>>;它多了一個顯示在屏幕上的功能[root@linux-128 ~]# cat 3.txt |tee -a 4.txt
abab
1asd
111
121
[root@linux-128 ~]# cat 3.txt |tee -a 4.txt
abab
1asd
111
121
[root@linux-128 ~]# cat 4.txt
abab
1asd
111
121
abab
1asd
111
121
abab
1asd
111
121
命令tr
[root@linux-128 ~]# cat 3.txt |tr 'a' 'A'
AbAb
1Asd
111
121[root@linux-128 ~]# cat 3.txt |tr '[a-z]' '[A-Z]'
ABAB
1ASD
111
121
split命令
- split 用于分割文檔
- split -l 按行來分割
- split -b 按大小來分割
split -b[root@linux-128 ~]# mkdir test
[root@linux-128 ~]# cd test
[root@linux-128 test]# find /etc/ -type f -name "*.conf" -exec cat {} >1.txt \;
[root@linux-128 test]# du -sh 1.txt
252K 1.txt
[root@linux-128 test]# split -b 50k 1.txt
[root@linux-128 test]# ls
1.txt xaa xab xac xad xae xaf
split –l[root@linux-128 test]# wc -l 1.txt
6479 1.txt
[root@linux-128 test]# split -l 1000 1.txt
[root@linux-128 test]# ls
1.txt xaa xab xac xad xae xaf xag
- split 后面如果不指定文件名,則會以xaa,xab。。。這樣的文件名來存取切割后的文件
指定目標分割文件名 為abc.[root@linux-128 test]# split -l 1000 1.txt abc.
[root@linux-128 test]# ls
1.txt abc.aa abc.ab abc.ac abc.ad abc.ae abc.af abc.ag
特殊符號
- $ 變量前綴,!$組合,正則里面表示行尾
- ;多條命令寫到一行,用分號分割
- ~ 用戶家目錄,后面正則表達式表示匹配符
- & 放到命令后面,會把命令丟到后臺
- 重定向 > 追加重定向>> 錯誤重定向2> 錯誤追加重定向2>> 正確和錯誤重定向&>
- [ ] 指定字符中的一個,[0-9],[a-zA-Z],[abc]
- || 和 && ,用于命令之間
- $:可以作為變量前面的標示符,可以和!結合起來使用,在正則里面表示行尾
[root@linux-128 test]# ls /root
11.txt 123 1.txt 2.txt 3.txt anaconda-ks.cfg d6z
11.txt.bak 1a.txt +2 321.txt 4.txt a.txt test
12 1.log 23.txt 321.txt.bak ab.txt b.txt 工號.txt
[root@linux-128 test]# ls !$
ls /root
11.txt 123 1.txt 2.txt 3.txt anaconda-ks.cfg d6z
11.txt.bak 1a.txt +2 321.txt 4.txt a.txt test
12 1.log 23.txt 321.txt.bak ab.txt b.txt 工號.txt
[root@linux-128 ~]# cat 2.txt;cat 3.txt
111
111aaa
121
111
abab
1asd
abab
!@#$@123
111
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
abab
1asd
111
121
-
~ 家目錄,后面正則表示匹配符
-
重定向(正確) > ,會覆蓋以前的內容
[root@linux-128 ~]# echo "121212">3.txt
[root@linux-128 ~]# cat 3.txt
121212
[root@linux-128 ~]# echo "ababab">>3.txt
[root@linux-128 ~]# cat 3.txt
121212
Ababab
[root@linux-128 ~]# cat 5.txt 2>6.txt
[root@linux-128 ~]# cat 6.txt
cat: 5.txt: 沒有那個文件或目錄
[root@linux-128 ~]# cat 6.txt
cat: 5.txt: 沒有那個文件或目錄
cat: 5.txt: 沒有那個文件或目錄
[root@linux-128 ~]# cat 3.txt 5.txt &> 6.txt
[root@linux-128 ~]# cat 6.txt
121212
ababab
cat: 5.txt: 沒有那個文件或目錄
- shell中的鏈接符號 && || ;
- && 前面命令執行成功后,才會執行后面的命令;如果前面執行不成功,后面命令不執行
- || 前面的命令執行不成功,才會執行后面的命令;如果前面命令執行成功,后面命令不執行
- ; 左邊的命令成功與否,后邊的命令都會執行
轉載于:https://my.oschina.net/u/3706916/blog/1575377
總結
以上是生活随笔為你收集整理的shell特殊符号cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符号下的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。