linux 管道 pipeline,[Linux] 流 ( Stream )、管道 ( Pipeline ) 、Filter - 笔记

流 ( Stream )

1. 流,是指可使用的数据元素一个序列。

2. 流,可以想象为是传送带上等待加工处理的物品,也可以想象为工厂流水线上的物品。

3. 流,可以是无限的数据。

4. 有一种功能,处理这一个流同时产生着另一个流。这种功能被成为 过滤 ( Filter )。使用管道 ( pipelie ) 将这些功能进行连接。

Unix 管道 ( Pipeline )

1. 管道连接着处理元素,一个处理元素的输出是下一个处理处理元素的输入。

2. 管道能加快数据处理速度。

2. Unix 下的管道图示如下。

5cec9140d89fc7ba6bdc8aa7f8a1f0e4.png

举个例子,列出当前目录下的所有文件( ls -l ),只保留带有字符串 key 的文件名( grep key ),并且在滚屏中查看( less )

ls -l | grep key | less

Filter

1. 是指用于处理流的程序。尽管 filter 可以单独使用,但是他们常常通过管道,组合起来使用。

2. 默认从标准输入( standard input )获取数据,写到标准输出( standard output )。可以通过输入操作符 < 改变数据源,通过输出操作符 > 改变写入目标,通过追加操作符 >> 追加数据。

3. 通过管道符 | ,链接多个 Filter。

4. 例子。从 /etc/passwd 获取数据,将得到的每一行根据 ":" 进行分割并获取第一字字段( cut -d : -f 1 /etc/passwd ),提起包含 foo 字符串的行输出( grep foo )

cut -d : -f 1 /etc/passwd | grep foo

5. 常见的 Filter 程序有:

grep :  从文本数据集中,搜索匹配到的正则表达式的行,一行为单位。

$ cat fruitlist.txt

apple

apples

pineapple

apple-

apple-fruit

fruit-apple

banana

pear

peach

orange

$ grep apple fruitlist.txt

apple

apples

pineapple

apple-

apple-fruit

fruit-apple

cat : 读取多个文件,并依次写入标准输出。

cat [options] [file_names] > newfile.txt

cut : 提取每一个行的一部分内容作为输出。较少用,例子略

head : 显示文本文件内容,或者管道数据中的开头部分。

head -n 20 filename

tail : 显示文本文件内容,或者管道数据中的结尾部分。

tail -n 20 filename

sort : 对文本文件内容,或者管道数据进行排序,并输出。可指定排序列

$ cat zipcode

Adam 12345

Bob 34567

Joe 56789

Sam 45678

Wendy 23456

$ sort -k 2n zipcode

Adam 12345

Wendy 23456

Bob 34567

Sam 45678

Joe 56789

参考资料

来源:https://www.cnblogs.com/TonyYPZhang/p/5662098.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值