流 ( 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. asp.net 从客户端中检测到有潜在危险的 Request.Form 值错误解

    从客户端(ftbContent="<P><A href="http://l...")中检测到有潜在危险的 Request.Form 值. 说明: 请求验 ...

  2. Android-adb相关

    最近做android开发遇到无法通过usb链接设备的情况,通过wifi连接设备调试也颇为方便 1.android 要root , 下载终端app  比如 BetterTerminal 2.通过以下命令 ...

  3. firefox 的event事件处理

    前几天,在用angularJs实现一个功能,点击后获取event的x,y坐标时,IE9, chrome下功能正常.但是firefox报event 未定义.初始代码如下: html: <div c ...

  4. hibernate_validator_06

    认证组(校验组) 校验组能够让你在验证的时候选择应用哪些约束条件. 这样在某些情况下( 例如向导 ) 就可以对每一步进行校验的时候, 选取对应这步的那些约束条件进行验证了. 校验组是通过可变参数传递给 ...

  5. 交叉编译:cannot find /lib/libc.so.6 collect2: ld returned 1 exit status

    1.有时候明明指定了交叉编译的动态库搜索路径,但有些库提示还是搜索不到,而且提示的搜索路径有点奇怪,不是指定的路径,比如: /opt/mips-4.4/bin/../lib/gcc/mips-linu ...

  6. ASP.NET MVC中的模型绑定

    模型绑定的本质   任何控制器方法的执行都受action invoker组件(下文用invoker代替)控制.对于每个Action方法的参数,这个invoker组件都会获取一个Model Binder ...

  7. 我的vimrc配置

    fankcoder@fankcoder:~$ cat ~/.vimrclet Tlist_Auto_Highlight_Tag=1 let Tlist_Auto_Open=1 let Tlist_Au ...

  8. css 雪碧图 及jquery定位代码

    无意间发现了一个很神奇的事情,就是 鼠标悬停在图片上方会切换,起初以为图标是单独插入的.但发现居然是一张完整的图片. 一万只草泥马在心中奔腾.这是怎么实现的? 后来询问得知,这是css精灵技术(spr ...

  9. id class

    id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式. HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 "#" 来定义. 以下的样式规则应用于元素 ...

  10. [OSGI]Eclipse4.2 OSGI依赖Bundle

    Eclipse 4.2 OSGI 依赖的Bundle: org.eclipse.osgiorg.apache.felix.gogo.runtimeorg.apache.felix.gogo.comma ...