8.10、shell 特殊符号_cut命令
- *任意个任意字符
- ?任意一个字符
- #注释字符
- \脱义字符
- |管道符
1. [root@localhost ~]# a=1
2. [root@localhost ~]# b=2
3. [root@localhost ~]# echo \$a\$b \脱义
4. $a$b
5. [root@localhost ~]#
1. [root@localhost ~]# cat /etc/passwd |head
2. root:x:0:0:root:/root:/bin/bash
3. bin:x:1:1:bin:/bin:/sbin/nologin
4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
5. adm:x:3:4:adm:/var/adm:/sbin/nologin
6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7. sync:x:5:0:sync:/sbin:/bin/sync
8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9. halt:x:7:0:halt:/sbin:/sbin/halt
10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11. operator:x:11:0:operator:/root:/sbin/nologin
12. [root@localhost ~]# cat /etc/passwd |head -2 |cut -d ':' -f 1 //-d参数指定分隔符,-f指定段号,-c指定第几个字符
13. root
14. bin
15. [root@localhost ~]# cat /etc/passwd |head -2 |cut -d ':' -f 1-3
16. root:x:0
17. bin:x:1
18. [root@localhost ~]#
19. [root@localhost ~]# cat /etc/passwd |head -2 |cut -c 5
20. :
21. x
22. [root@localhost ~]# cat /etc/passwd |head -2 |cut -c 4
23. t
24. :
25. [root@localhost ~]#
8.11、sort_wc_uniq命令
-
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行数
-
sort排序
1. [root@localhost ~]# sort /etc/passwd
2. adm:x:3:4:adm:/var/adm:/sbin/nologin //默认按ascll码排序
3. bin:x:1:1:bin:/bin:/sbin/nologin
4. chrony:x:997:995::/var/lib/chrony:/sbin/nologin
5. daemon:x:2:2:daemon:/sbin:/sbin/nologin
6. dbus:x:81:81:System message bus:/:/sbin/nologin
7. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
8. games:x:12:100:games:/usr/games:/sbin/nologin
9. halt:x:7:0:halt:/sbin:/sbin/halt
10. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
11. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
12. nobody:x:99:99:Nobody:/:/sbin/nologin
13. operator:x:11:0:operator:/root:/sbin/nologin
14. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
15. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
16. root:x:0:0:root:/root:/bin/bash
17. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
18. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
19. sync:x:5:0:sync:/sbin:/bin/sync
20. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
21. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
22. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
23. [root@localhost ~]# cat /etc/passwd
24. root:x:0:0:root:/root:/bin/bash
25. bin:x:1:1:bin:/bin:/sbin/nologin
26. daemon:x:2:2:daemon:/sbin:/sbin/nologin
27. adm:x:3:4:adm:/var/adm:/sbin/nologin
28. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
29. sync:x:5:0:sync:/sbin:/bin/sync
30. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
31. halt:x:7:0:halt:/sbin:/sbin/halt
32. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
33. operator:x:11:0:operator:/root:/sbin/nologin
34. games:x:12:100:games:/usr/games:/sbin/nologin
35. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
36. nobody:x:99:99:Nobody:/:/sbin/nologin
37. systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
38. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
39. dbus:x:81:81:System message bus:/:/sbin/nologin
40. polkitd:x:998:996:User for polkitd:/:/sbin/nologin
41. tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
42. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
43. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
44. chrony:x:997:995::/var/lib/chrony:/sbin/nologin
45. [root@localhost ~]#
- sort命令结合uniq命令
1. [root@localhost ~]# sort 1.txt |uniq
2.
3. 123123
4. 123123123123123123
5. abcdef
6. adm:x:3:4:adm:/var/adm:/sbin/nologin
7. bin:x:1:1:bin:/bin:/sbin/nologin
8. daemon:x:2:2:daemon:/sbin:/sbin/nologin
9. halt:x:7:0:halt:/sbin:/sbin/halt
10. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
11. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
12. operator:x:11:0:operator:/root:/sbin/nologin
13. root:x:0:0:root:/root:/bin/bash
14. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
15. sync:x:5:0:sync:/sbin:/bin/sync
16. [root@localhost ~]#
- wc -l查看行数
1. [root@localhost ~]# wc -l 1.txt
2. 36 1.txt
- wc -w
1. [root@localhost ~]# wc -w 1.txt
2. 35 1.txt
3. [root@localhost ~]#
- uniq去重复
1. [root@localhost ~]# uniq 1.txt
2. 123123123123123123
3. root:x:0:0:root:/root:/bin/bash
4. bin:x:1:1:bin:/bin:/sbin/nologin
5. daemon:x:2:2:daemon:/sbin:/sbin/nologin
6. adm:x:3:4:adm:/var/adm:/sbin/nologin
7. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
8. sync:x:5:0:sync:/sbin:/bin/sync
9. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
10. halt:x:7:0:halt:/sbin:/sbin/halt
11. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
12. operator:x:11:0:operator:/root:/sbin/nologin
13. root:x:0:0:root:/root:/bin/bash
14. bin:x:1:1:bin:/bin:/sbin/nologin
15. daemon:x:2:2:daemon:/sbin:/sbin/nologin
16. adm:x:3:4:adm:/var/adm:/sbin/nologin
17. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
18. sync:x:5:0:sync:/sbin:/bin/sync
19. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
20. halt:x:7:0:halt:/sbin:/sbin/halt
21. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
22. operator:x:11:0:operator:/root:/sbin/nologin
23. 123123
24. abcdef
25.
26. [root@localhost ~]# cat 1.txt
27. 123123123123123123
28. 123123123123123123
29. 123123123123123123
30. 123123123123123123
31. 123123123123123123
32. 123123123123123123
33. 123123123123123123
34. 123123123123123123
35. 123123123123123123
36. 123123123123123123
37. 123123123123123123
38. 123123123123123123
39. 123123123123123123
40. root:x:0:0:root:/root:/bin/bash
41. bin:x:1:1:bin:/bin:/sbin/nologin
42. daemon:x:2:2:daemon:/sbin:/sbin/nologin
43. adm:x:3:4:adm:/var/adm:/sbin/nologin
44. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
45. sync:x:5:0:sync:/sbin:/bin/sync
46. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
47. halt:x:7:0:halt:/sbin:/sbin/halt
48. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
49. operator:x:11:0:operator:/root:/sbin/nologin
50. root:x:0:0:root:/root:/bin/bash
51. bin:x:1:1:bin:/bin:/sbin/nologin
52. daemon:x:2:2:daemon:/sbin:/sbin/nologin
53. adm:x:3:4:adm:/var/adm:/sbin/nologin
54. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
55. sync:x:5:0:sync:/sbin:/bin/sync
56. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
57. halt:x:7:0:halt:/sbin:/sbin/halt
58. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
59. operator:x:11:0:operator:/root:/sbin/nologin
60. 123123
61. abcdef
- uniq -c参数统计重复次数
1. [root@localhost ~]# uniq -c 1.txt
2. 13 123123123123123123
3. 1 root:x:0:0:root:/root:/bin/bash
4. 1 bin:x:1:1:bin:/bin:/sbin/nologin
5. 1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
6. 1 adm:x:3:4:adm:/var/adm:/sbin/nologin
7. 1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
8. 1 sync:x:5:0:sync:/sbin:/bin/sync
9. 1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
10. 1 halt:x:7:0:halt:/sbin:/sbin/halt
11. 1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
12. 1 operator:x:11:0:operator:/root:/sbin/nologin
13. 1 root:x:0:0:root:/root:/bin/bash
14. 1 bin:x:1:1:bin:/bin:/sbin/nologin
15. 1 daemon:x:2:2:daemon:/sbin:/sbin/nologin
16. 1 adm:x:3:4:adm:/var/adm:/sbin/nologin
17. 1 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
18. 1 sync:x:5:0:sync:/sbin:/bin/sync
19. 1 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
20. 1 halt:x:7:0:halt:/sbin:/sbin/halt
21. 1 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
22. 1 operator:x:11:0:operator:/root:/sbin/nologin
23. 1 123123
24. 1 abcdef
25. 1
26. [root@localhost ~]#
8.12、tee_tr_split命令
- tee和输出重定向类似 -a参数追加
1. [root@localhost ~]# sort 1.txt |uniq -c > 11.txt
2. [root@localhost ~]# cat 11.txt
3. 1
4. 1 123123
5. 13 123123123123123123
6. 1 abcdef
7. 2 adm:x:3:4:adm:/var/adm:/sbin/nologin
8. 2 bin:x:1:1:bin:/bin:/sbin/nologin
9. 2 daemon:x:2:2:daemon:/sbin:/sbin/nologin
10. 2 halt:x:7:0:halt:/sbin:/sbin/halt
11. 2 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
12. 2 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
13. 2 operator:x:11:0:operator:/root:/sbin/nologin
14. 2 root:x:0:0:root:/root:/bin/bash
15. 2 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
16. 2 sync:x:5:0:sync:/sbin:/bin/sync
17. [root@localhost ~]# cat 11.txt ^[[2^C
18. [root@localhost ~]# sort 1.txt |uniq -c |tee 11.txt
19. 1
20. 1 123123
21. 13 123123123123123123
22. 1 abcdef
23. 2 adm:x:3:4:adm:/var/adm:/sbin/nologin
24. 2 bin:x:1:1:bin:/bin:/sbin/nologin
25. 2 daemon:x:2:2:daemon:/sbin:/sbin/nologin
26. 2 halt:x:7:0:halt:/sbin:/sbin/halt
27. 2 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
28. 2 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
29. 2 operator:x:11:0:operator:/root:/sbin/nologin
30. 2 root:x:0:0:root:/root:/bin/bash
31. 2 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
32. 2 sync:x:5:0:sync:/sbin:/bin/sync
33. [root@localhost ~]# cat 11.txt
34. 1
35. 1 123123
36. 13 123123123123123123
37. 1 abcdef
38. 2 adm:x:3:4:adm:/var/adm:/sbin/nologin
39. 2 bin:x:1:1:bin:/bin:/sbin/nologin
40. 2 daemon:x:2:2:daemon:/sbin:/sbin/nologin
41. 2 halt:x:7:0:halt:/sbin:/sbin/halt
42. 2 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
43. 2 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
44. 2 operator:x:11:0:operator:/root:/sbin/nologin
45. 2 root:x:0:0:root:/root:/bin/bash
46. 2 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
47. 2 sync:x:5:0:sync:/sbin:/bin/sync
48. [root@localhost ~]# >11.txt
49. [root@localhost ~]# cat 11.txt
50. [root@localhost ~]# cat 11.txt
51. [root@localhost ~]# !s
52. sort 1.txt |uniq -c |tee 11.txt
53. 1
54. 1 123123
55. 13 123123123123123123
56. 1 abcdef
57. 2 adm:x:3:4:adm:/var/adm:/sbin/nologin
58. 2 bin:x:1:1:bin:/bin:/sbin/nologin
59. 2 daemon:x:2:2:daemon:/sbin:/sbin/nologin
60. 2 halt:x:7:0:halt:/sbin:/sbin/halt
61. 2 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
62. 2 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
63. 2 operator:x:11:0:operator:/root:/sbin/nologin
64. 2 root:x:0:0:root:/root:/bin/bash
65. 2 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
66. 2 sync:x:5:0:sync:/sbin:/bin/sync
67. [root@localhost ~]#
- tr替换字符,针对字符操作
1. [root@localhost ~]# echo "liyang" |tr '[ly]' '[LY]'
2. LiYang
3. [root@localhost ~]#
4. [root@localhost ~]# echo "liyang" |tr '[ly]' '[LY]'
5. LiYang
6. [root@localhost ~]# echo "liyang" |tr '[a-z]' '[A-Z]'
7. LIYANG
8. [root@localhost ~]#
- split切割,-b大小(默认单位字节),-l行数,一般用于查看日志(内容巨大)
1. [root@localhost ~]# split -b 100M bigfile
2. [root@localhost ~]# split -l 1000 bigfile
3. [root@localhost ~]#
4. [root@localhost ~]# find /etc/ -type f -name "*conf" -exec cat {} >> 11.txt \;
5. [root@localhost ~]# split -b 100k 11.txt
6. [root@localhost ~]# ls
7. 11.txt 1.txt 3.txt 5.txt a.txt xaa xac xae xag xai xak xam
8. 14.txt 2.txt 4.txt anaconda-ks.cfg b.txt xab xad xaf xah xaj xal
9. [root@localhost ~]# rm -f x*
10. [root@localhost ~]# ls
11. 11.txt 14.txt 1.txt 2.txt 3.txt 4.txt 5.txt anaconda-ks.cfg a.txt b.txt
12. [root@localhost ~]#
8.13、shell特殊符号(下)
- $变量前缀,!$组合,正则里面表示行尾
- ; 多条命令写到一行,用分号分隔
- ~用户家目录,后面正则表达式表示匹配符
- &放到命令后面,会把命令丢到后台
- []指定字符中的一个,[0-9],[a-zA-Z],[abc]
- ||和&&,用于命令之间
1. [root@localhost ~]# ls 1.txt ; wc -l 11.txt
2. 1.txt
3. 34396 11.txt
4. [root@localhost ~]#
- “>”正确重定向,会覆盖之前的文件
- ”>>”追加重定向(正确)
- 2>错误重定向
- 2>>错误追加重定向
- &>正确错误输出重定向
- ||shell里表示或者的意思,执行命令时,前一条执行成功后,后一条就不在执行
- &&命令在执行两条命令时,前一条成功后,才会继续执行,如果不成功,后面的命令就不会执行
1. [root@localhost ~]# ls 1a.txt || wc 1.txt
2. ls: 无法访问1a.txt: 没有那个文件或目录
3. 36 35 1032 1.txt
4. [root@localhost ~]# ls 1a.txt && wc -l 1.txt
5. ls: 无法访问1a.txt: 没有那个文件或目录
6. [root@localhost ~]#
- 实际应用
1. [root@localhost ~]# [ -d liyang ] || mkdir liyang
2. [root@localhost ~]# ls
3. 11.txt 14.txt 1.txt 2.txt 3.txt 4.txt 5.txt anaconda-ks.cfg a.txt b.txt liyang
4. [root@localhost ~]#
5. [root@localhost ~]# [ -d liyang ] && mkdir liyang
6. mkdir: 无法创建目录"liyang": 文件已存在
7. [root@localhost ~]#
扩展
- 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