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 ]:判断一个目录是否存在。