2019独角兽企业重金招聘Python工程师标准>>>
cut sort wc uniq tee tr split命令
• cut 分割,-d 分隔符 -f 指定段号 -c 指定第几个字符
cut -d ":" -f 1 /etc/passwd 截取/etc/passwd文件中以:分割的第一段
cut -d ":" -f 2,4 /etc/paaswd 截取/etc/passwd文件中以:分割的第一段
cut -d ":" -f 1-3 /etc/passwd 截取/etc/passwd文件中以:分割的1到3段
head -n 3 /etc/passwd |cut -d":" -f 1 /etc/passwd 的前三行截图第一段
cut -c 6 /etc/passwd 提取每行的第六个字符
cut -c 1-8 /etc/passwd 提取每行的前八个字符
• sort 排序, -n 以数字排序 -r 反序 -u 去重复 -t 分隔符 -kn1/-kn1,n2
sort /etc/passwd sort不加任何选项,则从首字符向后,依次按ASCII码值进行比较,
最后将它们按升序输出。
head -n 5 /etc/passwd |sort -t: -k3 -n
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
-t后面跟分割符,-k后面跟数字,表示第几个区域的字符串排序,-n则表示使用纯数字排序。
head -n5 /etc/passwd | sort -t: -k3,5 -r
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
-k3,5表示从第3到第5区域间的字符串排序,-r表示反向排序。
如果把-nu一起使用,sort会把文档中的字母看成0
[root@localhost ~]# cut -d: -f1 /etc/passwd |sort -n -u
root
就只剩第一行了,因为它把所有的字符串都看成是0了
• wc -l 统计行数 -m 统计字符数 -w 统计词 -c显示Bytes大小 -L显示长度最长的行
[root@localhost ~]# cat file
123
abc
[root@localhost ~]# cat -A file
123$
abc$
[root@localhost ~]# wc -l file
2 file
[root@localhost ~]# wc -c file
8 file
[root@localhost ~]# wc -m file
8 file
[root@localhost ~]# wc -w file
2 file
-m统计字符时,每行末尾的换行符$也会统计
-w统计词 以空格为分割符计算
• uniq 去重, -c统计行数
uniq去重前提是先排序,相同的行不在一起的话不生效
常用格式:
sort file |uniq
sort file |uniq -c
[root@localhost ~]# cat 123
12
ab
12
a
[root@localhost ~]# uniq 123
12
ab
12
a
[root@localhost ~]# sort 123 |uniq
12
a
ab
[root@localhost ~]# sort 123 |uniq -c
2 12
1 a
1 ab
[root@localhost ~]#
• tee 和>类似,重定向的同时还在屏幕显示; -a 追加选项
[root@localhost ~]# sort 123 |uniq -c |tee a.txt
2 12
1 a
1 ab
[root@localhost ~]# cat a.txt
2 12
1 a
1 ab
[root@localhost ~]# sort 123 |uniq -c |tee -a a.txt
2 12
1 a
1 ab
[root@localhost ~]# cat a.txt
2 12
1 a
1 ab
2 12
1 a
1 ab
[root@localhost ~]#
• tr 替换字符,tr 'a' 'b',大小写替换tr '[a-z]' '[A-Z]'
[root@localhost ~]# echo "gavin" |tr 'g' 'G'
Gavin
• split 切割,-b大小(默认单位字节),-l行数
split -b 100 file 按100字节来切割
split -b 10k file 按10k大小来切割
split -b 1M file 按1M大小来切割
split -l 100 file 按每100行来切割
split -l 100 file f 指定切割后的文件名字以f开头
split -a 指定用于形成输出名称文件后缀部分的字母数
split -d 用数字代替字母后缀
[root@localhost gavin]# ll -h file
-rw-r--r--. 1 root root 13M 6月 30 20:04 file
[root@localhost gavin]# split -b 1M file f
[root@localhost gavin]# ls
faa fab fac fad fae faf fag fah fai faj fak fal fam file
[root@localhost gavin]# split -l 1000 file file_
[root@localhost gavin]# ls
file file_aa file_ab file_ac file_ad file_ae file_af
特殊符号:
• * 任意个任意字符
• ? 任意一个字符
• # 注释字符
• \ 脱义字符
• | 管道符
• $ 变量前缀,!$组合,正则里面表示行尾
• ;多条命令写到一行,用分号分割
• ~ 用户家目录,后面正则表达式表示匹配符
• & 放到命令后面,会把命令丢到后台
• > >> 2> 2>> &>
• [ ] 指定字符中的一个,[0-9],[a-zA-Z],[abc]
• || 和 && ,用于命令之间
|| 或者 前面命令执行成功不在执行第二条命令;前面命令执行不成功时执行后面命令;
&& 并且 前面命令执行成功才会执行后面的命令,否则不执行后面命令
; 不管前面命令执行成功与否后面命令都执行;
[root@localhost gavin]# [ -d gavin ] || mkdir gavin
[root@localhost gavin]# ls
gavin
[ -d gavin ] 查看是否有gavin这个目录,没有时创建gavin;
[root@localhost gavin]# [ -d gavin ] && mkdir gavin1
[root@localhost gavin]# ls
gavin gavin1
[ -d gavin ] 查看是否有gavin这个目录,有时创建gavin1;