简单的文本处理
这一节我们将介绍这几个命令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