常用的shell命令和工具(sort、uniq、paste、cut、xargs)
1.sort
将文件中的每一行作为一个单位,从首字符向后进行比较,按照ASCLL码值进行比较,最后按照升序输出。
常见选项
选项 | 解释 |
---|---|
-r | sort默认是升序,-r为降序。 |
-u | 去重。 |
-n | 以数值排序。 |
-t | 设定分隔符 |
-k | 指定第几列 |
其他选项
选项 | 解释 |
---|---|
-f | 忽略大小写 |
-c | 检查文件是否排好序,若乱序,输出第一个乱序的行的相关信息,最后返回1. |
-C | 检查问价是否排好序,若乱序,不输出内容,返回1. |
-b | 忽略每前一行的所有空白内容,从第一个可见的字符开始比较. |
2.uniq
相邻行去重
常见选项
选项 | 解释 |
---|---|
-c | 在每行行首加上本行在文件中出现的次数。 |
-u | 只显示不重复的行 |
-d | 只显示重复行 |
sort -u file 就相当于 sort file | uniq.
如何求两个文件的交集,并集,补集呢?
求file1 和 file2 的交集
求file1和file2的补集
求差集
file1-file2(file1里面有的,file2里面没有)
file2-file1(file2里面有的file1里面没有)
3.paste
将多个文件合并,paste按行将不同文件行的信息放在一行,缺省用空格或者tab键分割新行中不同文本。
常见选项
选项 | 解释 |
---|---|
-d | 指定域分割符 |
-s | 将每个文件合并成行 |
- | 每一个-,从标准输入读一次数据,默认使用空格或者tab键作为分割符 |
ls /etc | paste - - - - - -//会打印出该目录下的所有文件名,格式是每行6个
4.cut
cut命令从文件中的每一行剪切字节、字符、字段,并写到标准输出上。
常见选项
选项 | 解释 |
---|---|
-b | 以字节为单位进行分割 |
-c | 以字符为单位进行分割 |
-d | 自定义分隔符,默认为制表符 |
-f | 与-d一起使用,指定区域 |
-b选项:
-c选项:
-f与-d选项:
5.xargs
将标准输入数据、管道数据转换为命令行参数,可以将单行或多行文本输入转换为其他格式,例如:多行边单行,单行变多行。xargs默认命令是echo,空格是默认界定符。
常用选项
选项 | 解释 |
---|---|
-n | 指定列数,并多行输出 |
-d | 自定义一个分隔域,将特定列打散,并指定格式输出 |
-I | 指定一个替换字符串{} |
创建100个以test开头的文件,并将新建的文件,按照xargs的方式删除。
补充:
find命令中的print0选项和xargs中的-0选项。
find命令中-print选项是在每一个输出后添加一个回车换行符,而-print0用NULL字符来作为记录的分隔符。为了解决一个文件中有空白字符的情况。
6.grep
用来进行文本过滤,按照关键字或者正则表达式进行过滤。
常用选项
—|:—
-E|在扩展正则模式下
-P|在Perl正则模式下
-V|将不匹配的过滤出来
-r/-R|递归查找
-q:安静模式,不在屏幕上输出
-i|忽略大小写
-n|增加行号
-o|只输出文件中匹配到的部分