作者 | 行者自远责编 | 夕颜出品 | CSDN博客本文中,我们将一起来学习Linux进程和数据流的操作,比如过滤文本,统计文本、重定向、管道流、进程操作等,当然只是谈谈常用的命令以及参数,如果想详细看的话可以man command,利用Linux自带的命令手册去查看一下你想查的命令。文章比较有趣,相信大家看了以后会很有收获的!当然,如果说里面有什么问题的话,欢迎和博主华山论剑。
数据处理
1.grep:进行数据的过滤与筛选。我们平时处理文件时,肯定想查找或者过滤一下我们感兴趣的信息,那么我们就会用到这个东东了。
用法:
grep text file:这个就是在file文件中查找text文本内容了
这个就是在test.csv文件里面查找Jane内容了,查找到了就会打印出来它所在的行,并且会给它点颜色看看。
当然,我们查找的文本如果没有空格可以直接输入,如果说有空格的话就要用双引号包起来。
- grep -i text file:查找文本内容的时候忽略大小写,其中的i选项就是ignore的意思嘛,忽略大小写。
查找jane的时候忽略大小写,因此查到了Jane。
- grep -n text file:n表示number的意思,查找文本内容的时候显示对应行号 :
这个就把查找内容对应的行号显示出来了。
- grep -v text file:v表示invert,即颠倒的意思,查找与文本无关的内容。
这个说好了查找80,结果颠倒过来不听话给出来和80无关的行内容。
- grep -r text file:r表示recursive,即递归的意思,在子目录,子文件当中查找文本内容,file一般为目录。如果你不知道你要查找的文本在哪个内容,就可以一气呵成干脆点,目录里面全盘搜索。
不小心在系统根目录里面查了个80,结果一堆和80有关的,看来是全局搜索没错了。
- grep搭配正则表达式:接参数E。看看一些常用并且传统的正则表达式符号:
来试试:
这个就是利用符号^来查,就是查找开头为Jane的文本行内容,你看这不打印出来了嘛。对于其它的符号,大家都可以试试。
2.sort:对文本行内容进行排序。如果说你在操作文件的时候,感觉好杂乱无章,你想让它更好看一些,就可以排序一下。
用法:
- sort sort.txt:对文本行内容排序,默认的是对文本行的首字母进行升序排序:
- sort -o new_file file:给file文件排序,将排序以后的结果存入到新文件中,如果说没有这个文件,那么就会创建。
- sort -r file:有人可能会问,咦,为什么只能升序排呢?不能倒序。我想说这个就是倒序了,r就是reverse的意思嘛,按照行内容首字母倒序排序。
- sort -R file:随机排序,这个看心情吧,它想怎么排就怎么,很叛逆。
- sort -n file:既然有根据首字母来排序的,那么遇到数字怎么办,那就用这个,n就是number,数字的意思,对数字排序
当然,以上所有的参数都可以搭配使用,比如说对数字倒序排序:sort -r -n file。灵活变通就行啦。
3.wc:这个可不是我们平时说的WC,用处可大了,可以统计我们文本当中的行数,单词数,字节数等等。
用法:
- wc file:统计file文件的行数,单词数,字节数(从左至右显示列数)。
- wc -l file:只统计行数,l就是line嘛。
- wc -w file:只统计单词数,w就是word。
- wc -c file:只统计字节数,c就是count嘛。
- wc -m file:只统计字符数。
4.uniq:uniq一看就直到是unique,与众不同嘛,那么就允许重复的出现,这个就是为了删除文件中的重复内容。
- uniq repeat.txt:删除该文件中的重复内容,打印出处理后的内容
- uniq repeat.txt new.txt :把处理后的内容放到一个新文件中
- uniq -c repeat :显示重复的行数,比如说1重复了3行,那么显示3 1
- uniq -d repeat:d就是duplicated,即重复的,只显示重复的行的值
5.cut:剪切文件内容,可以做到提取部分我们想要的内容。
用法:
cut -c 2-4 file:每一行只保留第2到4个字符,-c就是根据字符剪切。
输出重定向
我们输入一个命令以后,它的结果一般有三个去处:
- 终端(打印在终端上)
- 文件(把结果放到文件中)
- 其它命令的输入(它的输出可以作为其它命令的输入)
我们之前看到的有终端,文件的,接下来博主会介绍一种新的,即去往其它命令的输入(管道的时候会说)。
1.>: 把输出内容重定向到一个文件中,并且如果这个文件已经存在并且有内容则会覆盖。
cat命令的结果最终重定向输出到test文件中去了,如果多次重定向到这个文件,那么就会覆盖之前的内容。
2.>>: 这个就和上面有点差别,虽然也是重定向输出到文件但是不会覆盖,只是会继续接到后面。
3. 2>:上面那几个都是标准输出的重定向,前提在于那些命令是对的,不会报错,但是这个命令就和上面不一样了,虽然用法一样,但是这个是标准错误输出的重定向,如果说命令错误了,那么错误信息就可以用这个来重定向输出。
4. 2>>: 这个也和上面介绍的>>差不多,只不过也是错误输出的重定向,不会覆盖。
5. 2>&1: 把错误和标准输出都重定向到文件中,一般放最后面,和>,>>一起搭配使用。
比如说:
cat not_exist_file.csv > results.txt 2>&1这个就是标准输出,错误输出都会重定向到results.txt文件中。
输入重定向
1. |