shell特殊符号cut命令
* *号表示统配字符
? ?表示一个任意字符
# #号注释字符,被注释的内容不会生效
\ \符号表示脱意字符,给特殊符号脱离原有的特殊用法
cut用于分段
cut -d 分割符 -f 过滤字段 /文件
-d 指定分割符,使用逗号分隔可以显示多个字段,如3,6
-f 指定第几列字符
-c 切割区间字符,如3-6区间的字符
[root@localhost tmp]# cat passwd |head -5 |cut -d ":" -f 1 cut截取第一段内容
root
bin
daemon
adm
lp
[root@localhost tmp]# cat passwd |head -5 |cut -d ":" -f 1,2 cut截取第1、2段内容
root:x
bin:x
daemon:x
adm:x
lp:x
[root@localhost tmp]# cat passwd |head -5 |cut -d ":" -f 1-3 cut截取1到3段内容
root:x:0
bin:x:1
daemon:x:2
adm:x:3
lp:x:4
[root@localhost tmp]# cat passwd |head -5 |cut -d ":" -f 1,3,6 cut截取1、3、6段内容
root:0:/root
bin:1:/bin
daemon:2:/sbin
adm:3:/var/adm
lp:4:/var/spool/lpd
sort_wc_uniq命令
sort排序
sort命令排序
sort默认按从小到大排序
sort 选项 选项 字符
-t 指定分隔符
-i 排序后的内容保存到原文件
-k 指定分割字段,指定字符区间,使用逗号可以分隔输出多个字段,如2,5
-n 按字符大小数字正序排序
-u 去除相同的字段
-r 按字符数字大小反序排序
按ascii码排序,字母和特殊符号在sort中会识别为0,排序到最前面
[root@localhost tmp]# sort passwd
(
)
[
]
123456
123456
1234566788898
2534535
3254365
34546575
3456465467
3465465465
35436546
4335346
45436546
546547654
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
root:x:0:0:root:/root:/bin/bash
sort -r 反向排序
sort -t 分隔符排序
wc统计命令
[root@localhost tmp]# wc -l passwd 统计行数
26 passwd
[root@localhost tmp]# wc -m passwd 统计字符数
460 passwd
[root@localhost tmp]# wc -w passwd 统计单词数
25 passwd
uniq 排序
-c 去除重复的内容,并合计重复的次数,-c去重复不会对不连续的字符统计数量并排序,需要先sort排序后再去重统计
[root@localhost tmp]# sort -n passwd |uniq -c
1
1 (
1 )
1 [
1 ]
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 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
2 123456
1 2534535
1 3254365
1 4335346
4 34546575 去除重复的行并统计出现的次数
1 35436546
tee_tr_split命令
tee重定向输出到文件并可以显示到屏幕中
tee 重定向
通常重定向:echo "12345" >>1.txt
tee重定向并输出到屏幕显示:echo “12345” |tee 1.txt
[root@localhost tmp]# echo “12345” |tee 1.txt
“12345”
tr替换指定字符
tr替换指定字符
[root@localhost tmp]# echo "hello world" |tr 'hw' 'HW'
Hello World
tr替换全部字符,小写替换为大写
[root@localhost tmp]# echo "hello world" |tr 'a-z' 'A-Z'
HELLO WORLD
split 大文件切割命令
split 分割成1000字节一个文件
[root@localhost tmp]# split -b 1000 a.txt
[root@localhost tmp]# ls
a.txt xan xbb xbp xcd xcr xdf xdt xeh xev xfj xfx xgl xgz xhn xib xip xjd xjr
xaa xao xbc xbq xce xcs xdg xdu xei xew xfk xfy xgm xha xho xic xiq xje xjs
xab xap xbd xbr xcf xct xdh xdv xej xex xfl xfz xgn xhb xhp xid xir xjf xjt
xac xaq xbe xbs xcg xcu xdi xdw xek xey xfm xga xgo xhc xhq xie xis xjg xju
xad xar xbf xbt xch xcv xdj xdx xel xez xfn xgb xgp xhd xhr xif xit xjh xjv
xae xas xbg xbu xci xcw xdk xdy xem xfa xfo xgc xgq xhe xhs xig xiu xji xjw
xaf xat xbh xbv xcj xcx xdl xdz xen xfb xfp xgd xgr xhf xht xih xiv xjj xjx
xag xau xbi xbw xck xcy xdm xea xeo xfc xfq xge xgs xhg xhu xii xiw xjk xjy
xah xav xbj xbx xcl xcz xdn xeb xep xfd xfr xgf xgt xhh xhv xij xix xjl xjz
xai xaw xbk xby xcm xda xdo xec xeq xfe xfs xgg xgu xhi xhw xik xiy xjm xka
xaj xax xbl xbz xcn xdb xdp xed xer xff xft xgh xgv xhj xhx xil xiz xjn
xak xay xbm xca xco xdc xdq xee xes xfg xfu xgi xgw xhk xhy xim xja xjo
xal xaz xbn xcb xcp xdd xdr xef xet xfh xfv xgj xgx xhl xhz xin xjb xjp
xam xba xbo xcc xcq xde xds xeg xeu xfi xfw xgk xgy xhm xia xio xjc xjq
[root@localhost tmp]# du -sh
1.3M
[root@localhost tmp]# ls
a.txt xan xbb xbp xcd xcr xdf xdt xeh xev xfj xfx xgl xgz xhn xib xip xjd xjr
xaa xao xbc xbq xce xcs xdg xdu xei xew xfk xfy xgm xha xho xic xiq xje xjs
xab xap xbd xbr xcf xct xdh xdv xej xex xfl xfz xgn xhb xhp xid xir xjf xjt
xac xaq xbe xbs xcg xcu xdi xdw xek xey xfm xga xgo xhc xhq xie xis xjg xju
xad xar xbf xbt xch xcv xdj xdx xel xez xfn xgb xgp xhd xhr xif xit xjh xjv
xae xas xbg xbu xci xcw xdk xdy xem xfa xfo xgc xgq xhe xhs xig xiu xji xjw
xaf xat xbh xbv xcj xcx xdl xdz xen xfb xfp xgd xgr xhf xht xih xiv xjj xjx
xag xau xbi xbw xck xcy xdm xea xeo xfc xfq xge xgs xhg xhu xii xiw xjk xjy
xah xav xbj xbx xcl xcz xdn xeb xep xfd xfr xgf xgt xhh xhv xij xix xjl xjz
xai xaw xbk xby xcm xda xdo xec xeq xfe xfs xgg xgu xhi xhw xik xiy xjm xka
xaj xax xbl xbz xcn xdb xdp xed xer xff xft xgh xgv xhj xhx xil xiz xjn
xak xay xbm xca xco xdc xdq xee xes xfg xfu xgi xgw xhk xhy xim xja xjo
xal xaz xbn xcb xcp xdd xdr xef xet xfh xfv xgj xgx xhl xhz xin xjb xjp
xam xba xbo xcc xcq xde xds xeg xeu xfi xfw xgk xgy xhm xia xio xjc xjq
指定每个100k split -b (默认大小是字节)
[root@localhost tmp]# split -b 100k a.txt
[root@localhost tmp]# ls
a.txt xaa xab xac
[root@localhost tmp]# du -sh *
256K a.txt
100K xaa
100K xab
56K xac
[root@localhost tmp]# split -b 100k a.txt abc
[root@localhost tmp]# ls
abcaa abcab abcac a.txt
[root@localhost tmp]# rm -f abc* 指定名字
[root@localhost tmp]# split -b 100k a.txt abc.
[root@localhost tmp]# ls
abc.aa abc.ab abc.ac a.txt
除了指定大小之外,还可以指定行 split -l
[root@localhost tmp]# split -l 1000 a.txt
[root@localhost tmp]# ls
a.txt xaa xab xac xad xae xaf xag
[root@localhost tmp]# wc -l * 查看split切割文件的总行数
6601 a.txt
1000 xaa
1000 xab
1000 xac
1000 xad
1000 xae
1000 xaf
601 xag
13202 总用量
shell特殊符号下
shell中的&&、||
&&:逻辑并;左边命令执行成功,才会执行右边的命令条件
||:逻辑或;左边的命令条件不成功执行,才会执行右边的命令
; 逻辑与;:左边命令无论是否成功执行,都会执行右边的命令条件
$表示变量前缀,!$组合,正则里面表示行尾
;多条命令写到一行,用分号分割
[root@localhost tmp]# ls 1.txt; wc -l 2.txt
1.txt
7 2.txt
~表示用户的家目录,后面正则表达式 表示匹配符
&放到命令后面,会把命令丢到后台
,>> , 2> ,2>> , &>
[]指定字符中的一个[0-9],[a-zA-Z],[abc]
||和 && 用于命令之间
||逻辑或
如果前面的命令执行不成功,就会执行第二条命令
如果前面的命令执行成功了,就不再执行后面的命令
[root@localhost tmp]# ls la.txt || wc -l 2.txt
ls: 无法访问la.txt: 没有那个文件或目录
7 2.txt
[root@localhost tmp]# ls 1.txt || wc -l 2.txt
1.txt
&&逻辑并
如果前面的命令错了,就不再执行后面的命令。
只有前面的命令成功了,才会执行后面的命令。
[root@localhost tmp]# ls la.txt && wc -l 2.txt
ls: 无法访问la.txt: 没有那个文件或目录
[root@localhost tmp]# ls 1.txt && wc -l 2.txt
1.txt
7 2.txt
如下示例
[root@localhost tmp]# [ -d helloworld ] || mkdir helloworld
[ -d helloworld ] || mkdir helloworld
如果helloworld这个目录不存在就创建helloworld目录,
[root@localhost tmp]# ls
[root@localhost tmp]# [ -d helloworld ] && mkdir helloworld
如果目录helloworld 存在,再去创建目录helloworld
mkdir: 无法创建目录"helloworld": 文件已存在
[root@localhost tmp]# [ -d helloworld ] || mkdir helloworld
如果这个目录已经存在,就不会执行后面的命令
相关测验题目:http://ask.apelearn.com/question/5437