8.10 shell特殊符号cut命令
特殊符号
- “*” 代表零个或多个字符
- “?” 代表一个字符
- “#” 注释符号
- “\” 脱意符号
- “|” 管道符
cut用法
[root@lixiang01 ~]# cat /etc/passwd |head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@lixiang01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,5
root:root
bin:bin
- cut分割,用来显示行中的指定部分
- -d 判定分隔符
- -f 要那段
- -c指定第几个字符
8.11 sort_wc_uniq命令
sort 用法
按字符编码表排序
[root@lixiang01 ~]# head /etc/passwd > 1.txt
[root@lixiang01 ~]# vi 1.txt
[root@lixiang01 ~]# sort 1.txt
<
>
@#
2112
222
3421
432
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
{e33
]f
*%$#fs
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
perator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
sfae
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sjfoen
sync:x:5:0:sync:/sbin:/bin/sync
按字符的数值排序
[root@lixiang01 ~]# sort -n 1.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
{e33
]f
*%$#fs
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
perator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
sfae
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sjfoen
sync:x:5:0:sync:/sbin:/bin/sync
222
432
2112
3421
倒置参数:-r
[root@lixiang01 ~]# sort -n -r 1.txt
3421
2112
432
222
sync:x:5:0:sync:/sbin:/bin/sync
sjfoen
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sfae
root:x:0:0:root:/root:/bin/bash
perator: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
*%$#fs
]f
{e33
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
@#
>
<
- sort 排序,将文件进行排序,并将排序结果标准输出(按ASCⅡ排序需要调整/etc/)
- -n 以数字排序
- -r 反序
- -t分隔符
- -kn1/-kn1,n2 指定段排序
wc 用法
[root@lixiang01 ~]#
[root@lixiang01 ~]# wc -m 1.txt 字符数
436 1.txt
[root@lixiang01 ~]# wc -w 1.txt 词汇数(只要不空格就算一个词)
22 1.txt
[root@lixiang01 ~]# wc -l 1.txt 行数
22 1.txt
- wc 统计,统计并打印换行符,词数,字符数
- -l 统计行数
- -m 统计字符数
- -w 统计词
uniq用法
[root@lixiang01 ~]# vi 2.txt
[root@lixiang01 ~]# sort 2.txt |uniq -c
3 1
2 112
2 123
1 2
2 33
3 4
2 5
2 6
- uniq 去重,
- -c显示重复数
- 单独使用只能去重相邻行,常常与sort结合使用
8.12 tee_tr_split命令
tee用法
[root@lixiang01 ~]# >a.txt
[root@lixiang01 ~]# cat a.txt
[root@lixiang01 ~]# sort 2.txt |uniq -c |tee a.txt
3 1
2 112
2 123
1 2
2 33
3 4
2 5
2 6
[root@lixiang01 ~]# cat a.txt
3 1
2 112
2 123
1 2
2 33
3 4
2 5
2 6
[root@lixiang01 ~]# sort 2.txt |uniq -c |tee -a a.txt
3 1
2 112
2 123
1 2
2 33
3 4
2 5
2 6
[root@lixiang01 ~]# cat a.txt
3 1
2 112
2 123
1 2
2 33
3 4
2 5
2 6
3 1
2 112
2 123
1 2
2 33
3 4
2 5
2 6
- tee, 和>类似,重定向的同时还在屏幕显示
- -a 类似追加重定向
tr 用法
[root@lixiang01 ~]# echo "axianglinux" |tr '[al]' '[AL]'
AxiAngLinux
- tr替换字符,tr'a''b',大小写替换tr‘[a-z]''[A-Z]'
split用法
[root@lixiang01 test]# find /etc/ -type f -name "*conf" -exec cat {} >> a.txt \;
[root@lixiang01 test]# split -b 10000 a.txt
[root@lixiang01 test]# ls
a.txt xab xad xaf xah xaj xal xan xap
xaa xac xae xag xai xak xam xao xaq
[root@lixiang01 test]# cat a.txt >> b.txt
[root@lixiang01 test]# cat a.txt >> b.txt
[root@lixiang01 test]# rm -f x*
[root@lixiang01 test]# rm -f a*
[root@lixiang01 test]# wc -l b.txt
8662 b.txt
[root@lixiang01 test]# split -l 1000 b.txt
[root@lixiang01 test]# ls
b.txt xaa xab xac xad xae xaf xag xah xai
[root@lixiang01 test]# wc -l *
8662 b.txt
1000 xaa
1000 xab
1000 xac
1000 xad
1000 xae
1000 xaf
1000 xag
1000 xah
662 xai
17324 总用量
[root@lixiang01 test]#
- split切割,可以将一个大文件分割成很多个小文件
- -b大小(默认单位字节),
- -l行数
8.13 shell特殊符号下
- $ 变量前缀,!$组合,正则里面表示行尾
- ; 多条命令写到一行,用分号分割,可以逐个执行并按顺序输出
- ~ 用户家目录,会把命令丢到后台
- & 放到命令后面,会把命令丢到后台
- > >> 2> 2>> &> //正确重定向 正确追加 错误重定向 错误追加 不区分重定向
- []指定字符中的一个,[0-9],[a-zA-Z],[abc]
- ||和&&,用于命令之间,
||和&&用法
||表示你不行我来就来,&&表示你先来,可以我就上
[root@lixiang01 ~]# ls 1a.txt ; wc -l 2.txt
ls: 无法访问1a.txt: 没有那个文件或目录
17 2.txt
[root@lixiang01 ~]# ls 1a.txt || wc -l 2.txt //前面命令不成功,继续
ls: 无法访问1a.txt: 没有那个文件或目录
17 2.txt
[root@lixiang01 ~]# ls 1.txt || wc -l 2.txt //前面命令成功则停止
1.txt
[root@lixiang01 ~]# ls 1a.txt && wc -l 2.txt //前面命令不成功,停止
ls: 无法访问1a.txt: 没有那个文件或目录
[root@lixiang01 ~]# ls 1.txt && wc -l 2.txt //前面命令成功,继续
1.txt
17 2.txt
相关测验题目:http://ask.apelearn.com/question/5437
扩展
- source exec 区别 http://alsww.blog.51cto.com/2001924/1113112
- Linux特殊符号大全http://ask.apelearn.com/question/7720
- sort并未按ASCII排序 http://blog.csdn.net/zenghui08/article/details/7938975