Linux成长之路(六)——简单的文本处理和数据流重定向

简单的文本处理

这一节我们将介绍这几个命令tr(注意不是tar),col,join,paste。实际这一节是上一篇关于能实现管道操作的命令的延续,所以我们依然将结合管道来熟悉这些命令的使用。

  • 【tr】命令
    tr命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。
    使用方法:
    tr [option]…SET1[SET2]
    这里写图片描述
    这里写图片描述

  • 【col】命令
    col命令可以将Tab换成对等数量的空格键,或者反转这个操作。
    使用方式:col[option]
    这里写图片描述

实验:
1、这里写图片描述

2、这里写图片描述

3、这里写图片描述

  • 【join】命令
    这个命令就是用于将两个文件中包含相同内容的那一行合并在一起。
    使用方式: join [option] … file1 file2
    这里写图片描述

    实验:
    相同行被合成一行输出:
    这里写图片描述

    这里写图片描述

  • 【paste】命令
    paste这个命令与join 命令类似,它是在不对比数据的情况下,简单地将多个文件合并一起,以Tab隔开。
    使用方法:paste [option] file…
    这里写图片描述

    这里写图片描述

数据流重定向

你可能对重定向这个概念感到些许陌生,但你应该在前面的课程中多次见过>或>>操作了,并知道他们分别是将标准输出导向一个文件或追加到一个文件中。这其实就是重定向,将原本输出到标准输出的数据重定向到一个文件中,因为标准输出(/dev/stdout)本身也是一个文件,我们将命令输出导向另一个文件自然也是没有任何问题的。
回顾>与>>符号:
这里写图片描述

  • 简单的重定向
    Linux 默认提供了三个特殊设备,用于终端的显示和输出,分别为stdin(标准输入,对应于你在终端的输入),stdout(标准输出,对应于终端的输出),stderr(标准错误输出,对应于终端的输出)。
    这里写图片描述
    说明:文件描述符:文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于 UNIX、Linux 这样的操作系统。
    命令的输入可以是标准输入也可以是文件,命令的输出可以是标准输出也可以是文件。
    这里写图片描述
    注意:不要将管道和重定向混淆,管道默认是连接前一个命令的输出到下一个命令的输入,而重定向通常是需要一个文件来建立两个命令的连接。

  • 标准错误重定向
    这里写图片描述

    这里写图片描述

  • 使用【tee】命令同时重定向到多个文件
    经常你可能还有这样的需求,除了将需要将输出重定向到文件之外也需要将信息打印在终端,那么你可以使用tee命令来实现:
    这里写图片描述

  • 永久重定向
    我们前面的重定向操作都只是临时性的,即只对当前命令有效,那如何做到“永久”有效呢,比如在一个脚本中,你需要某一部分的命令的输出全部进行重定向,难道要让你在每个命令上面加上临时重定向的操作嘛,当然不需要,我们可以使用exec命令实现“永久”重定向。exec命令的作用是使用指定的命令替换当前的 Shell,及使用一个进程替换当前进程,或者指定新的重定向:
    这里写图片描述
    说明:1>bash.txt中1是文件描述符,表示标准输出,上文已经说过。

  • 创建输出文件描述符
    默认在 Shell 中可以有9个打开的文件描述符,上面我们使用了也是它默认提供的0,1,2号文件描述符,另外我们还可以使用3-8的文件描述符,只是它们默认没有打开而已,你可以使用下面命令查看当前 Shell 进程中打开的文件描述符:
    这里写图片描述

    创建文件描述符重定向:
    这里写图片描述
    实验一下:
    这里写图片描述

  • 关闭文件描述符
    这里写图片描述

  • 完全屏蔽命令的输出
    在 Linux 中有一个被成为“黑洞”的设备文件,所有导入它的数据都将被“吞噬”。
    这里写图片描述


参考文献:https://www.shiyanlou.com/courses/1
注:转载请注明原文出处:
作者:CUG_UESTC
出处:http://blog.csdn.net/qq_31192383/article/details/53241089

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值