开启辅助访问 切换到窄版

打印 上一主题 下一主题

搞定Linux命令之进程与数据流,不服来辩!|原力计划

[复制链接]
作者:heavenyin1324 
版块:
嵌入式操作系统 linux 发布时间:2020-6-6 01:43:41
12230
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式

作者 | 行者自远责编 | 夕颜出品 | 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.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表