Linux管道符和重定向

2023年 10月 13日 119.6k 0

1 神奇的管道符

image-20201026163943548

管道符的作用就好比一个连接器,最终目的是修饰和改变原始的输出结果,负责把前面的输出结果递交给后面的修饰符,起着一个承上启下的作用。

如下图:命令行1执行后会有一个原始输出的结果,这个输出结果经过中间的管道符后,提交给后面的命令行2,命令行2 把之前的输出作为自己的输入,最终得到处理后的结果。

1.1 管道符做过滤器使用

image-20201026164807049

  • 过滤类型:就是从原本的输出结果中截取需要的一部分出来,其他的部分不要。例如:grep,还有 head,tail,awk等;

例一 : 管道符 + grep 实现行过滤

例二 :管道符 + head 和 tail 实现过滤开头和结尾的行

管道符与 awk 的连用

awk 是Linux 下的一个强大的文本处理工具,自身是一个命令,同时也是一个编程平台。

image-20201026171635514

awk 取列之前,需要先定义如何分隔每一行,也就是用什么符号来分隔一行内容。 -F 参数就是用来指定分隔符,-F “ ” 就是按照空格来分隔,另外 awk 默认情况下就是按照空格分隔,所以 -F 省略可以不写。把一行内容分隔好之后,接下来就用表达式写出来,表达式就是后面的 ‘{print 1}’,其实 {print 1} 就是编程语句,为了方便就整合在一行中。

1.2 管道符做统计作用

统计,把cat输出的结果用管道符传给 wc 命令,可以得到所有结果的行数

排序,原本杂乱无序的内容通过管道符传给sort以后,可以实现基本的排序功能,sort 默认按照第一列来排序的, sort -rn 的作用是按照数字倒序排列,这样最大的数字会被排列在最前面。

合并同类项,有的数据文件内容会有重复的,可以使用 uniq -c 来合并相同的行,并且统计出数量,只能统计连续的数字,不连续的会被分成两个合并字段,如果想要统计一列数字的数量需要先进行排序然后在进行统计, cat test.txt | sort | uniq -c

1.3 管道符的扩展功能使用

2 实用的重定向

2.1 什么是重定向?

管道符是把前一个命令的输出传递给后一个命令,作为后一个命令的输入。而重定向 “ > ” 则是把一个命令的输出传递保存进入一个文件中。

实际操作:

注意:1. 重定向 “ > ” 会自动创建新的文件,不需要提前touch新的文件,如果删除文件再次执行重定向的命令文件又会被创建出来。

  • 重定向 “ > ” 会完全覆盖文件原本的内容
  • 2.2 追加重定向 >>

    重定向 > 会完全覆盖一个文件原本的内容,追加重定向 >> 就是解决这一问题,再不覆盖原有的记录的基础上在下面追加新的记录。

    2.3 Linux 标准输出和错误输出

    平时在Linux下输入命令,按Enter键之后命令会被执行,这些命令在执行后没有任何提示,默默地把事情做好。

    有些命令执行后会有输出返回的,可以看到:如下图

    类似于执行完后返回来的信息,又叫做标准输出。标准输出简单地说就是命令执行成功后,返回来的正确输出。

    相对于标准输出会有错误输出,执行一个不存在的文件会出错。

    在Linux中,一个命令的输出有两种:标准正确输出和标准错误输出。错误的输出是不能使用 > 重定向的。

    获取的错误信息的方法:2>,在 > 前面加2 可以重定向错误的信息到一个文件中。

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论