zoukankan      html  css  js  c++  java
  • [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 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

    参考资料

    Stream (computing), wikipedia

    Pipeline (Unix), wikipedia

    Bubble (computing), wikipedia

    Filter, wikipedia 

  • 相关阅读:
    Oracle VM VirtualBox 虚拟机中桥接模式一直不能用 ,需要安装 VBoxNetLwf.inf
    Windows7窗口跑到屏幕外面
    手动操作群晖蜂鸣器指示灯方法
    DHT11温湿度传感器接入HomeBridge
    DIY树莓派Homebridge智能台灯
    群晖NAS局域网无法跑满千兆排查
    虚拟机性能监控与故障处理工具------JDK的命令行工具
    垃圾收集器与内存分配策略-内存分配与回收策略
    Minor GC 与Full GC有什么不一样
    java的关键字与保留字
  • 原文地址:https://www.cnblogs.com/TonyYPZhang/p/5662098.html
Copyright © 2011-2022 走看看