10月15日任务
8.10 shell特殊符号cut命令
8.11 sort_wc_uniq命令
8.12 tee_tr_split命令
8.13 shell特殊符号下
截取命令:cut
- -d 分隔符
- -f 字段
#截取/etc/passwd的前十行的第1,2个字段
[root@centos7 ~]# cat /etc/passwd | head -n 5 | cut -d ":" -f 1,2
root:x
bin:x
daemon:x
adm:x
lp:x
- -c 指定第几个字符
[root@centos7 ~]# cat /etc/passwd | head -n 5 | cut -c 1
r
b
d
a
l
排序命令:sort
按ASCII码顺序排序内容
- -n 按数字顺序排序(默认字母排在数字前)
[root@centos7 ~]# cat /etc/passwd | head -n 5 | sort -n
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
- -r 按反序
[root@centos7 ~]# cat /etc/passwd | head -n 5 | sort -r
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
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
- -t 分隔符,配合-k n/ -k n1,n2
# 按第三个字段的字母顺序排序
[root@centos7 ~]# cat /etc/passwd | head -n 5 | sort -t ":" -k 3
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
统计命令:wc
# 测试数据
[root@centos7 ~]# cat /etc/passwd | head -n 5
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
- -l 显示文本内容的行号
[root@centos7 ~]# cat /etc/passwd | head -n 5 | wc -l
5
- -m/c 显示字符数
[root@centos7 ~]# cat /etc/passwd | head -n 5 | wc -m / c
183
- -w 显示文本内的单词数,以空格分割
[root@centos7 ~]# cat /etc/passwd | head -n 5 | wc -w
5
cat -A 显示行尾的换行符
除重命令:uniq
去除文本内的重复行,前提需要先排序
[root@centos7 ~]# cat 1.txt | uniq
num111
passwd this is a
num111
passwd
num111
|
# 不排序
[root@centos7 ~]# cat 1.txt | uniq -c
1 num111
1 passwd this is a
1 num111
1 passwd
4 num111
1 |
# 先排序再去重
[root@centos7 ~]# cat 1.txt | sort -n | uniq -c
1 |
6 num111
1 passwd
1 passwd this is a
重定向并显示:tee
重定向内容至文本的同时在终端显示
[root@centos7 ~]# cat /etc/passwd | head -n 5 | tee tee.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
[root@centos7 ~]# cat tee.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
- -a 追加内容
[root@centos7 ~]# cat /etc/passwd | tail -n 1 | tee -a tee.txt
castiel:x:1000:1000::/home/castiel:/bin/bash
[root@centos7 ~]# cat tee.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
castiel:x:1000:1000::/home/castiel:/bin/bash
字符替换命令:tr
转换内容,tr
[root@centos7 ~]# echo "test" | tr "s" "S"
teSt
文件切割命令:split
split切割文件
# 测试文件
[root@centos7 tmp]# find / -type f -name "*.conf" -exec cat {} >> test.txt \;
[root@centos7 tmp]# ll
总用量 676
-rw-r--r--. 1 root root 688355 9月 30 23:10 test.txt
[root@centos7 tmp]# du -sh test.txt
676K test.txt
- -b 按指定大小切割,不加单位默认为b(字节)
# 按大小进行切割
[root@centos7 tmp]# split -b 100K test.txt test-
[root@centos7 tmp]# ll
总用量 1352
-rw-r--r--. 1 root root 102400 9月 30 23:11 test-aa
-rw-r--r--. 1 root root 102400 9月 30 23:11 test-ab
-rw-r--r--. 1 root root 102400 9月 30 23:11 test-ac
-rw-r--r--. 1 root root 102400 9月 30 23:11 test-ad
-rw-r--r--. 1 root root 102400 9月 30 23:11 test-ae
-rw-r--r--. 1 root root 102400 9月 30 23:11 test-af
-rw-r--r--. 1 root root 73955 9月 30 23:11 test-ag
-rw-r--r--. 1 root root 688355 9月 30 23:10 test.txt
[root@centos7 tmp]# rm -f test-*
- -l 按指定行数切割
切割时不指定文件前缀,将以特定命名
# 按行数进行分割
[root@centos7 tmp]# cat test.txt | wc -l
28439
[root@centos7 tmp]# split -l 7000 test.txt test-
[root@centos7 tmp]# ll
总用量 1356
-rw-r--r--. 1 root root 259864 9月 30 23:13 test-aa
-rw-r--r--. 1 root root 138784 9月 30 23:13 test-ab
-rw-r--r--. 1 root root 105356 9月 30 23:13 test-ac
-rw-r--r--. 1 root root 172792 9月 30 23:13 test-ad
-rw-r--r--. 1 root root 11559 9月 30 23:13 test-ae
-rw-r--r--. 1 root root 688355 9月 30 23:10 test.txt
shell特殊符号
- $
- 变量的值 echo $PATH
- 正则表示行尾
- !$表示上一条命令的最后一个参数
- ;
- 多条命令单行编辑连续执行
- ~
- 用户家目录
- 正则表示匹配符
- &
- 后台运行进程
- 定向
- > 重定向
- >> 追加重定向
- 2> 错误重定向
- 2>> 错误追加重定向
- &> 重定向与错误重定向
- []
- 范围选其一,[0-9],[a-zA-Z]
- ||
- 命令1 || 命令2
- 命令1正确执行,命令2不执行
- 命令1执行错误,命令2执行
- 命令1 || 命令2
- &&
- 命令1 && 命令2
- 命令1执行正确,命令2执行
- 命令1执行错误,命令2不执行
- 命令1 && 命令2
[root@centos7 tmp]# ll
总用量 0
# 当前目录下,test目录不存在,返回错误代码1
[root@centos7 tmp]# [ -d test ]
[root@centos7 tmp]# echo $?
1
# && :命令1返回错误,命令2--mkdir命令不执行
[root@centos7 tmp]# [ -d test ] && mkdir test
[root@centos7 tmp]# echo $?
1
# || :命令1返回错误,执行mkdir命令
[root@centos7 tmp]# [ -d test ] || mkdir test
[root@centos7 tmp]# echo $?
0
# 此时test目录已存在,命令1返回0,命令2不执行
[root@centos7 tmp]# [ -d test ] || mkdir test
[root@centos7 tmp]# echo $?
0
[root@centos7 tmp]# ll
总用量 0
drwxr-xr-x. 2 root root 6 9月 30 23:31 test
# 命令1执行正确,命令2也执行
[root@centos7 tmp]# [ -d test ] && mkdir test
mkdir: 无法创建目录"test": 文件已存在
来源:oschina
链接:https://my.oschina.net/u/3964535/blog/2245819