流 ( 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

参考资料

Stream (computing), wikipedia

Pipeline (Unix), wikipedia

Bubble (computing), wikipedia

Filter, wikipedia

[Linux] 流 ( Stream )、管道 ( Pipeline ) 、Filter - 笔记的更多相关文章

  1. linux命令中"|"管道流的意思

    在linux中.可以利用符号:"|"来实现管道功能. 那么什么是管道功能呢: 管道是Shell的一大特征.他将多个命令前后连接起来形成一个管道流. 管道流中的每一个命令都作为一个单 ...

  2. 恕我直言你可能真的不会java第4篇:Stream管道流Map操作

    一.回顾Stream管道流map的基础用法 最简单的需求:将集合中的每一个字符串,全部转换成大写! List<String> alpha = Arrays.asList("Mon ...

  3. Stream流中的常用方法foeEach和Stream流中的常用方法filter

    延迟方法:返回值类型仍然是Stream接口自身类型的方法,因此支持链式调用.(除了中介方法外,其余方法均为延迟方法) 终结方法:返回值类型不再是Stream接口自身类型的方法,因此不再支持类似Stri ...

  4. Java笔记:Java 流(Stream)、文件(File)和IO

    更新时间:2018-1-7 12:27:21 更多请查看在线文集:http://android.52fhy.com/java/index.html java.io 包几乎包含了所有操作输入.输出需要的 ...

  5. java学习笔记之IO编程—内存流、管道流、随机流

    1.内存操作流 之前学习的IO操作输入和输出都是从文件中来的,当然,也可以将输入和输出的位置设置在内存上,这就需要用到内存操作流,java提供两类内存操作流 字节内存操作流:ByteArrayOutp ...

  6. Java中的函数式编程(六)流Stream基础

    写在前面 如果说函数式接口和lambda表达式是Java中函数式编程的基石,那么stream就是在基石上的最富丽堂皇的大厦. 只有熟悉了stream,你才能说熟悉了Java 的函数式编程. 本文主要介 ...

  7. [并发并行]_[线程模型]_[Pthread线程使用模型之一管道Pipeline]

    场景 1.经常在Windows, MacOSX 开发C多线程程序的时候, 经常需要和线程打交道, 如果开发人员的数量不多时, 同时掌握Win32和pthread线程 并不是容易的事情, 而且使用Win ...

  8. 此流非彼流——Stream详解

    Stream是什么? Java从8开始,不但引入了Lambda表达式,还引入了一个全新的流式API:Stream API.它位于java.util.stream包中. Stream 使用一种类似用 S ...

  9. JAVA基础知识之IO——IO流(Stream)的概念

    Java IO 流 Java将不同的设备或载体(键盘.文件.网络.管道等)的输入输出数据统称为"流"(Stream),即JAVA的IO都是基于流的. JAVA传统的所有流类型类都包 ...

随机推荐

  1. 鼠标双击范围基于Win7

    TP鼠标双击范围主要是修改Registry中的HKEY_CURRENT_USER\Control Panel\Mouse里面的两个参数 DoubleClickHeight跟DoubleClickWid ...

  2. codevs 2612 最有分解方案 (贪心)

    /* 数字不重复 将一个正整数分解成若干的整数的和 数字不重复 且数字不相同 保证不重复的话 贪心策略是从2开始分 然后把最后剩下的数均匀分到后面 证明嘛 这里写的可能不是很严谨 对于一个n 如果我们 ...

  3. codevs3304水果姐逛水果街

    /* 线段树开到*4 *4 *4 *4 ! 维护 4个值 区间最大值 区间最小值 从左往右跑最大收益 从右往左跑最大收益 */ #include<iostream> #include< ...

  4. css样式float造成的浮动“塌陷”问题的解决办法

    什么是CSS Float? 定义: float 属性定义元素浮动到左侧或右侧.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动.浮动元素会生成一个块级元素,而不论 ...

  5. JavaScript省市联动

    <html> <head> <title>JS省市二级联动菜单,整理收集.</title> </head> <body bgcolor ...

  6. Eclipse4.4安装旧版本插件报错 Failed to prepare partial IU

    Failed to prepare partial IU: [R]com.googlecode.veloeclipse.ui 2.0.8. work around: go to Help -> ...

  7. 重温web服务器--细说Tomcat服务器

    从大学开始接触java web的开发时就开始使用tomcat部署web项目,对它的理解仅仅停留在"这是个开源免费的servlet容器"的阶段,后来也接触了一些tomcat的体系,原 ...

  8. sencha app build 到 Capturing theme image不执行

    解决sencha app build 到 Capturing theme image不执行 今天电脑重装系统,重新安装了sencha cmd,但是在打包时,到了 Capturing theme ima ...

  9. Notepad++中查找替换回车符

    用Nodepad++打开文件 View->Show Symbol->Show End of Line "End of Line"行结束符,由"CR" ...

  10. 自定义Back返回键(实现按两次返回键退出程序)

    实现机制:当用户点击物理返回键时,Activity会调用onBackPressed(),只需在Activity中复写该方法即可 以下是代码实现: package com.example.qjm3662 ...