Linux 字符处理
管道
Linux 中的管道,它是一个固定大小的缓冲区域,该缓冲区的大小为1页,即4字节。
管道是一种两个进程间进行单向通信的机制。因为管道传递数据的单向性,管道又成为半双工管道。管道的这一特点决定了其使用的局限。
本质上,管道也是文件,存储在内存中。
管道的两个特点
- 数据只能由一个进程流向另一个进程(其中一个读管道,一个写管道)。如果要进行双工通信,需要建立两个管道。
- 管道只能用于父子进程或者兄弟进程通信。也就是说管道只能用于具有亲缘关系的进程间通信。
管道的不足
- 没有名字
- 缓冲区大小受限
- 传输的是无格式的字节流,需要事先约定好数据格式
管道间的通信
通过管道通信的两个进程,一个进程向管道写数据,另外一个从中读数据。写入的数据每次都添加到管道缓冲区的末尾,都数据的时候都是从缓冲区的头部读出数据。
管道命令
管道命令操作符是|
,它只能处理经过前面一个指令传出的正确输出信息,对错误信息没有直接处理能力。然后,传递给下一个命令,作为标准输入。

说了那么多,看图就明白了。
cat FileName | more

使用 grep 搜索文本
什么是 grep
grep 是 Linux 下非常强大的基于行的文本搜索工具。
grep 有什么用
使用该工具时,如果匹配到相关信息就会打印出符合条件的所有行。
grep 常用参数
参数 | 含义 |
---|---|
i | 不区分大小写 |
c | 统计包含匹配的行数 |
n | 输出行号 |
v | 反向匹配 |
实例
在日志中查找错误信息

也可以使用管道的方式达到效果

使用 sort 排序
sort [-ntkr] FileName
作用就是对字符进行排序。
参数
参数 | 作用 |
---|---|
n | 采取数字排序 |
t | 指定分隔符 |
k | 指定第几列 |
r | 反向排序 |

以冒号为分隔符,选择列按数字进行排列

使用 uniq 删除重复内容
uniq [-ic]
如果文件(或标准输出)中有多行完全相同的内容,我们希望能够删除或者统计重复的行,我们就可以使用这条命令。
参数
参数|含义
i|忽略大小行
c|统计重复行
实例
如果相同的行非连续,则 uniq 命令不具备删除效果。所以一般搭配sort
命令使用。

使用 cut 截取文本
cut -f Col -d Delimit
可以在一行文本中,选取用户所需的文本,并能以分隔符分隔
实例
打印出系统中所有的用户

使用 tr 做文本转换
tr 命令主要用于文本转换和删除。
实例

使用 paste 做文本合并
paste
的作用在于将文件按照行进行合并,中间使用 tab 隔开。
实例

网友评论