day 25 shell相关命令及特殊符
8.9 shell特殊符-cut命令
用法: cut -d "分隔符" -f n
--#截取第n段,“-d”后面跟分隔符,“-f” 指定段号, “-c” 指定第几个字符(此时不需要分隔符了),常结合管道符一起使用,例如:
- cat /etc/passwd | head -2 | cut -d":" -f 1 --#截取passwd文件前两行的第1段
- cat /etc/passwd | head -2 | cut -d":" -f 1,2 --#截取passwd文件前两行的第1段和第2段
- cat /etc/passwd | head -2 | cut -d":" -f 1-4 --#截取passwd文件前两行的第1段到第4段
- cat /etc/passwd | head -2 | cut -c 4 --#截取passwd文件前两行的第4个字符
注:cut命令只是对文件进行操作并得到结果,并不更改文件内容
8.10 sort_wc_uniq命令1.sort命令
用于排序, 用法:sort -nrt
file
- 无选项 默认按照ASCII码有小到大排序
- -n --#按数字排序,字母或特殊符号都被认为是0(这部分依然按ASCII排序)
- -r --#反序排序
- -t --#后跟分隔符
2. wc命令
用于统计,用法:wc -lmw file
- wc -l --#统计行数
- wc -m --#统计字符数,包括行尾隐藏的换行符“$”
- wc -w --#统计词数,以空格作为区分,即使两个词之间以“,”分割,也会认为是一个词
3. uniq命令
用于去掉重复的行,用法:
uniq -c, -c 表示统计行数,需要先排序才能去重
- uniq file --#如果uniq后直接接文件,实际上需要先排序才能去重,否则只有相邻行的内容相同情况下才会去重
- sort file | uniq --#先对文件排序,然后去重
- sort file | uniq -c --#先对文件排序,然后去重,并统计出现重复的次数
注:以上命令只是对文件进行操作并得到结果,并不更改文件内容
8.11 tee_tr_split命令1. tee命令
与输出重定向(>)类似,只是在输出的同时会在屏幕显示,“-a”表示追加,例如
- sort 1.txt | uniq -c | tee 2.txt --#将前面一段命令的输出结果重写到文件2.txt中,同时在屏幕显示出来
- sort 1.txt | uniq -c | tee -a 2.txt --#将前面一段命令的输出结果追加到文件2.txt中,同时在屏幕显示出来(只显示追加的部分,并不是整个文件的内容)
2. tr命令
用于替换字符,针对字符进行操作,注意替换与被替换的内容中要有空格分开
- tr '[a-z]' '[A-Z]' --#将所有小写字符替换成大写字符
- tr 'a' 'A' --#将某个小写字符替换成大写字符
- tr '[al]' '[AL]' --#将某些小写字符替换成大写字符
- tr '[al]' '[23]' --#将某些小写字符替换成对应的数字
3. split命令
用于切割文件, 用法:split -bl [参数]
file
- -b --#表示按大小进行切割(默认单位为字节), 例:split -b 100M file [前缀名],不指定前缀名,默认以“x”为前缀,在当前路径下切割,会产生切割后的文件,原文件依然保留不变
- -l --#表示按行数进行切割, 例:split -l 100M file
- $ --#变量前缀
- !$ --#上一条命令的最后部分内容,正则表达式里表示行尾
- ; --#多条命令写到一行,用分号分割
- ~ --#用户家目录,正则表达式里表示匹配符
- & --#放到命令后面,会把命令丢到后台执行
- [ ] --#方括号中指定字符中任意一个,[a-z],[0-9],[a-zA-Z],[abc]
- || --#“或”的意思,用于多个命令之间,cmd1 || cmd2,如果cmd1执行成功(返回结果为0)则不执行cmd2,如果cmd1执行失败(返回结果非0)则执行cmd2
- && --#“且”的意思,用于多个命令之间,cmd1 || cmd2,如果cmd1执行成功(返回结果为0)则执行cmd2,如果cmd1执行失败(返回结果非0)则不执行cmd2