1. 程式人生 > >Linux centos7 shell特殊符號、cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符號

Linux centos7 shell特殊符號、cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符號

ear 兩個 XA style 統計字符 uniq login 出現 span

一、shell特殊符號、cut命令

*任意字符

[root@davery ~]# ls /tmp/*.txt
/tmp/1.txt /tmp/2.txt /tmp/q.txt
[root@davery ~]#

?任意一個字符

[root@davery ~]# mkdir /tmp/test1
[root@davery ~]# touch /tmp/test1
[root@davery ~]# ls -d /tmp/test?
/tmp/test1
[root@davery ~]#

#註釋字符

[root@davery ~]# sdx=233 #assa
[root@davery ~]# echo $sdx
233
[root@davery ~]#

\脫義字符

[root@davery ~]# ls -d test\*
ls: 無法訪問test*: 沒有那個文件或目錄
[root@davery ~]#

|管道符,管道後邊可用多種命令

[root@davery ~]# cat 1.txt |wc -l

cut用來截取一個字段,格式 cut -d ‘分隔字符‘ [-cf] n n代表數字

-d:後邊跟分隔字符,分隔字符要用單引號括起來

-c:後邊接第幾個字符

-f:後邊接第幾個區塊

[root@davery ~]# 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@davery ~]#
[root@davery ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1

截取前2行第1個
root
bin
[root@davery ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2 截取前2行第1、2個
root:x
bin:x
[root@davery ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3 截取前2行第-到3個
root:x:0
bin:x:1
[root@davery ~]#

[root@davery ~]# cat /etc/passwd |head -2 |cut -c 4 截取前2行指定第4個字符
t
:
[root@davery ~]#

二、sort、wc、uniq命令

sort排序命令,格式sort [-t 分隔符] [-kn1,n2] [-nru] n1、n2為數字。

-t 後邊跟分隔符

-n表示用純數字排序

-r表示反向排序

-u表示去重復

-kn1,n2表示由n1區間排序到n2區間,可以只寫-kn1,即對n1字段排序

[root@davery ~]# sort /etc/passwd |head -2 |cut -c 4
:
:

[root@davery ~]# sort /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
davery:x:1000:1003::/home/davery:/bin/bash
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
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
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
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
uaer1:x:1001:1004::/home/uaer1:/bin/bash
user2:x:1002:1005::/home/user2:/bin/bash
user3:x:1006:1006::/home/user3:/bin/bash
user4:x:1007:898::/home/user4:/bin/bash
user6:x:1008:898::/home/user6:/bin/bash

默認按照abcd...排序

[root@davery ~]# head /etc/passwd >> 0.txt
[root@davery ~]# sort 0.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
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
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
[root@davery ~]#

[root@davery ~]# head -n5 /etc/passwd|sort 從首字母符向後依次按照ASCII碼值進行比較,最後按照升序排列
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@davery ~]#

[root@davery ~]# head -n5 /etc/passwd |sort -t: -k3 -n 第三個區塊按照數字升序排列
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
[root@davery ~]# ^C

[root@davery ~]# head -n5 /etc/passwd |sort -t: -k3 -n -r 第三個區塊按照數字反向排列
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
[root@davery ~]#

[root@davery ~]# sort -n 0.txt 從首字母符向後依次按照ASCII碼值進行比較,最後按照升序排列
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
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
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
[root@davery ~]#

[root@davery ~]# sort -nr 0.txt 反向排序
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
root:x:0:0:root:/root:/bin/bash
operator: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
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

wc命令

用於統計文檔的行數、字符數或詞數

-l統計行數

-m統計字符

-w統計詞數

[root@davery ~]# wc -l /etc/passwd
25 /etc/passwd
[root@davery ~]# wc -m /etc/passwd
1092 /etc/passwd
[root@davery ~]# wc -w /etc/passwd
33 /etc/passwd
[root@davery ~]#

uniq命令,用來刪除重復的行。

-c 統計重復的行數

[root@davery ~]# vi 0.txt

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
ioperator:x:11:0:operator:/root:/sbin/nologin
21213
123213
222

222

222
[root@davery ~]#
[root@davery ~]# uniq 0.txt 222重復的就被刪除了
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
ioperator:x:11:0:operator:/root:/sbin/nologin
21213
123213
222

[root@davery ~]#

[root@davery ~]# sort 0.txt |uniq -c
1
1 123213
1 21213
3 222
1 adm:x:3:4:adm:/var/adm:/sbin/nologin
1 bin:x:1:1:bin:/bin:/sbin/nologin
1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
1 halt:x:7:0:halt:/sbin:/sbin/halt
1 ioperator:x:11:0:operator:/root:/sbin/nologin
1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
1 root:x:0:0:root:/root:/bin/bash
1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
1 sync:x:5:0:sync:/sbin:/bin/sync
[root@davery ~]#

三、tee、tr、split命令

tee後邊跟文件名,作用類似於重定向>,但它比重定向多一個功能,即把文件寫入後面所跟的文件時,還會做顯示。

[root@davery ~]# sort 0.txt |uniq -c |tee 2.txt 把前面的東西重定向到2.txt並顯示出來
1
1 123213
1 21213
3 222
1 adm:x:3:4:adm:/var/adm:/sbin/nologin
1 bin:x:1:1:bin:/bin:/sbin/nologin
1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
1 halt:x:7:0:halt:/sbin:/sbin/halt
1 ioperator:x:11:0:operator:/root:/sbin/nologin
1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
1 root:x:0:0:root:/root:/bin/bash
1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
1 sync:x:5:0:sync:/sbin:/bin/sync

[root@davery ~]# cat 2.txt
1
1 123213
1 21213
3 222
1 adm:x:3:4:adm:/var/adm:/sbin/nologin
1 bin:x:1:1:bin:/bin:/sbin/nologin
1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
1 halt:x:7:0:halt:/sbin:/sbin/halt
1 ioperator:x:11:0:operator:/root:/sbin/nologin
1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
1 root:x:0:0:root:/root:/bin/bash
1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
1 sync:x:5:0:sync:/sbin:/bin/sync
[root@davery ~]#

tr命令,用於替換字符,常用來處理文檔中出現的特殊符號,

-d 刪除某個字符,後邊要跟刪除的字符

-s 刪除重復的字符

[root@davery ~]# echo "davery" |tr ‘[d]‘ ‘[D]‘ 只跟換d為D
Davery
[root@davery ~]#

[root@davery ~]# echo "davery" |tr ‘d‘ ‘D‘ 只跟換d為D
Davery
[root@davery ~]#

[root@davery ~]# echo "davery" |tr ‘[a-z]‘ ‘[A-Z]‘ 全部換大寫
DAVERY
[root@davery ~]#

[root@davery ~]# echo "davery" |tr ‘[a-z]‘ ‘[1]‘
]1]]]]
[root@davery ~]# echo "davery" |tr ‘[a-z]‘ ‘1‘ 變為數字1
111111
[root@davery ~]#

split命令

用於切割文件

-b表示根據大小來分隔文檔,默認單位為byte,還有M k

-l根據行數來分隔文檔

[root@davery ~]# find /etc/ -type f -name "*conf" -exec cat {} >> 0.txt \;
[root@davery ~]# ls
0.tx~ 0.txt.gz 1.txt 3.txt 5036 anaconda-ks.cfg.01 a.txt davery~ uear1
0.txt 0_txt.swp 2.txt 4913 5159 anaconda-ks.cfg.1 davery make user1
[root@davery ~]#

[root@davery ~]# du -sh 0.txt
212K 0.txt
[root@davery ~]#

0.tx~ 0.txt.gz 1.txt 3.txt 5036 anaconda-ks.cfg.01 a.txt davery~ test user1
0.txt 0_txt.swp 2.txt 4913 5159 anaconda-ks.cfg.1 davery make uear1
[root@davery ~]# split -b 1000 0.txt
[root@davery ~]# ls
0.tx~ a.txt xaf xar xbd xbp xcb xcn xcz xdl xdx xej xev xfh xft xgf xgr xhd xhp xib
0.txt davery xag xas xbe xbq xcc xco xda xdm xdy xek xew xfi xfu xgg xgs xhe xhq xic
0.txt.gz davery~ xah xat xbf xbr xcd xcp xdb xdn xdz xel xex xfj xfv xgh xgt xhf xhr xid
0_txt.swp make xai xau xbg xbs xce xcq xdc xdo xea xem xey xfk xfw xgi xgu xhg xhs xie
1.txt test xaj xav xbh xbt xcf xcr xdd xdp xeb xen xez xfl xfx xgj xgv xhh xht xif
2.txt uear1 xak xaw xbi xbu xcg xcs xde xdq xec xeo xfa xfm xfy xgk xgw xhi xhu xig
3.txt user1 xal xax xbj xbv xch xct xdf xdr xed xep xfb xfn xfz xgl xgx xhj xhv xih
4913 xaa xam xay xbk xbw xci xcu xdg xds xee xeq xfc xfo xga xgm xgy xhk xhw xii
5036 xab xan xaz xbl xbx xcj xcv xdh xdt xef xer xfd xfp xgb xgn xgz xhl xhx xij
5159 xac xao xba xbm xby xck xcw xdi xdu xeg xes xfe xfq xgc xgo xha xhm xhy
anaconda-ks.cfg.01 xad xap xbb xbn xbz xcl xcx xdj xdv xeh xet xff xfr xgd xgp xhb xhn xhz
anaconda-ks.cfg.1 xae xaq xbc xbo xca xcm xcy xdk xdw xei xeu xfg xfs xge xgq xhc xho xia
[root@davery ~]#

split -b 1000 0.txt abc 指定名字

四、shell特殊符號

$變量前面的標識符,結合!來使用

[root@davery ~]# ls 0.txt
0.txt
[root@davery ~]# !$
0.txt

;符號如果想在一行執行多個命令,則使用;分隔

[root@davery ~]# mkdir test1 ; touch 0.1txt ; touch 0.2txt ; touch 0.3txt

~ 表示用戶家的目錄,root用戶的家目錄/root,普通用戶/home/username

[root@davery ~]# cd ~
[root@davery ~]# pwd
/root
[root@davery ~]# su davery
[davery@davery root]$ cd ~
[davery@davery ~]$ pwd
/home/davery
[davery@davery ~]$

&把命令放到後臺執行需要加&

[root@davery /]# sleep 23 &
[1] 2606
[root@davery /]# jobs
[1]+ 運行中 sleep 23 &
[root@davery /]#

重定向符號

>取代 、>>追加 、2>錯誤重定向 、2>>錯誤重定向追加

[ ]代表字符組合中的任意一個[0-9],[a-z A-Z],[abc]

&&和||

[root@davery /]# ls 0.txt || wc -l 2.txt 表示或,兩個命令其中一個能執行成就行

[root@davery /]# ls 0.txt && wc -l 2.txt 前邊命令成功才會執行後邊命令

Linux centos7 shell特殊符號、cut命令、sort_wc_uniq命令、tee_tr_split命令、shell特殊符號