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