[Linux] 流 ( Stream )、管道 ( Pipeline ) 、Filter - 笔记
流 ( Stream )
1. 流,是指可使用的数据元素一个序列。
2. 流,可以想象为是传送带上等待加工处理的物品,也可以想象为工厂流水线上的物品。
3. 流,可以是无限的数据。
4. 有一种功能,处理这一个流同时产生着另一个流。这种功能被成为 过滤 ( Filter )。使用管道 ( pipelie ) 将这些功能进行连接。
Unix 管道 ( Pipeline )
1. 管道连接着处理元素,一个处理元素的输出是下一个处理处理元素的输入。
2. 管道能加快数据处理速度。
2. Unix 下的管道图示如下。
举个例子,列出当前目录下的所有文件( 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 /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 filename
tail : 显示文本文件内容,或者管道数据中的结尾部分。
tail -n filename
sort : 对文本文件内容,或者管道数据进行排序,并输出。可指定排序列
$ cat zipcode
Adam
Bob
Joe
Sam
Wendy $ sort -k 2n zipcode
Adam
Wendy
Bob
Sam
Joe
参考资料
[Linux] 流 ( Stream )、管道 ( Pipeline ) 、Filter - 笔记的更多相关文章
- linux命令中"|"管道流的意思
在linux中.可以利用符号:"|"来实现管道功能. 那么什么是管道功能呢: 管道是Shell的一大特征.他将多个命令前后连接起来形成一个管道流. 管道流中的每一个命令都作为一个单 ...
- 恕我直言你可能真的不会java第4篇:Stream管道流Map操作
一.回顾Stream管道流map的基础用法 最简单的需求:将集合中的每一个字符串,全部转换成大写! List<String> alpha = Arrays.asList("Mon ...
- Stream流中的常用方法foeEach和Stream流中的常用方法filter
延迟方法:返回值类型仍然是Stream接口自身类型的方法,因此支持链式调用.(除了中介方法外,其余方法均为延迟方法) 终结方法:返回值类型不再是Stream接口自身类型的方法,因此不再支持类似Stri ...
- Java笔记:Java 流(Stream)、文件(File)和IO
更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...
- java学习笔记之IO编程—内存流、管道流、随机流
1.内存操作流 之前学习的IO操作输入和输出都是从文件中来的,当然,也可以将输入和输出的位置设置在内存上,这就需要用到内存操作流,java提供两类内存操作流 字节内存操作流:ByteArrayOutp ...
- Java中的函数式编程(六)流Stream基础
写在前面 如果说函数式接口和lambda表达式是Java中函数式编程的基石,那么stream就是在基石上的最富丽堂皇的大厦. 只有熟悉了stream,你才能说熟悉了Java 的函数式编程. 本文主要介 ...
- [并发并行]_[线程模型]_[Pthread线程使用模型之一管道Pipeline]
场景 1.经常在Windows, MacOSX 开发C多线程程序的时候, 经常需要和线程打交道, 如果开发人员的数量不多时, 同时掌握Win32和pthread线程 并不是容易的事情, 而且使用Win ...
- 此流非彼流——Stream详解
Stream是什么? Java从8开始,不但引入了Lambda表达式,还引入了一个全新的流式API:Stream API.它位于java.util.stream包中. Stream 使用一种类似用 S ...
- JAVA基础知识之IO——IO流(Stream)的概念
Java IO 流 Java将不同的设备或载体(键盘.文件.网络.管道等)的输入输出数据统称为"流"(Stream),即JAVA的IO都是基于流的. JAVA传统的所有流类型类都包 ...
随机推荐
- 《Android开发艺术探索》读书笔记 (9) 第9章 四大组件的工作过程
第9章 四大组件的工作过程 9.1 四大组件的运行状态 (1)四大组件中只有BroadcastReceiver既可以在AndroidManifest文件中注册,也可以在代码中注册,其他三个组件都必须在 ...
- AutoBackupForApps
This sample demonstrates how to selectively disable Automatic Backups in Android M, either by adjust ...
- Centos7+Apache2.4+php5.6+mysql5.5搭建Lamp环境——为了wordPress
最近想搭建个人博客玩玩,挑来挑去发现口碑不错的博客程序是wordpress,简称wp.虽然是学java路线的程序员,但因入行时间太短,至今没有发现较为称手开源的博客程序,如果各位大神有好的推荐,也希望 ...
- ie浏览器下input和select的上下居中问题!!!!
在Google浏览器下的input和select标签里面的文字是根据它的高度自适应上下居中的,而ie浏览器下的input和select里面的文字就不会根据高度自适应上下居中,跟大家分享一下我的解决方法 ...
- ASPNET5的依赖注入
ASP.NET5设计的时候就是以DI为基础的,它可以利用内建的框架在Startup类的方法中,把依赖注入进去.应用服务也可以被配置的注入.默认的服务容器提供一些基本的功能,它并不打算代替现代主流的DI ...
- this、new、apply和call详解
讲解this指针的原理是个很复杂的问题,如果我们从javascript里this的实现机制来说明this,很多朋友可能会越来越糊涂,因此本篇打算换一个思路从应用的角度来讲解this指针,从这个角度理解 ...
- 基于GBT28181:SIP协议组件开发-----------第四篇SIP注册流程eXosip2实现(一)
原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3945294.html. 上章节讲解了利用自主开发的组件SIP组件l ...
- Android学习----Activity
一.什么是activity Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能.它是 android 应用程序的基本功能单元.Activity 本身是没有界面的.所以activ ...
- Websocket 与代理服务器如何交互? How HTML5 Web Sockets Interact With Proxy Servers
How HTML5 Web Sockets Interact With Proxy Servers Posted by Peter Lubberson Mar 16, 2010 With the re ...
- [xfire]使用xfire开发webservice的简单示例
目前项目上有用到xfire,所以临时看了些xfire的资料和示例,自己照着写了一个简单示例. xfire在2007年后已经停止更新,正式更名为apache cxf,也可以说是xfire2.0. xfi ...