zoukankan      html  css  js  c++  java
  • 【shell编程基础3】shell编程的组合应用之二:管道及其命令

    预备知识:

    管道它是一个单向的,可以把前一个的数据输出导向到下一个命令的工具,这样可以实现多个命令组合处理一套数据。 

    它的符号是  "|"    管道只能处理经过前面一个命令传过来的正确信息,也就是standard output的信息,对于standard error并没有直接处理。一般会忽略。

    过程就如上图所示的,前面命令的标准输出变为下一个命令的标准输入。

    注意

    • 管道命令仅处理standard output,对于standard error会予以忽略。
    • 管道命令必须能够接收来自前一个命令的数据成为standard input 继续处理才行。

    soga,那么接下来看一些命令对管道的应用。


    1.选取命令:cut,grep

    • cut   选取命令,以行为单位处理信息。
    #cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]
    
    #参数
    -b 以字节为单位进行分割。这些字节忽略多字节字符边界,除非指定-n参数
    -c  以字符为单位进行分割
    -d  自定义分隔符,默认为制表符
    -f  依据-d参数的分割字符将一段信息分割为数段,用-f取出第几段的意思
    -n  取消分割多字节字符,仅和-b标志一起使用。如果字符的最后一个字节落在由-b标志的List参数指示的</br>范围之内,该字符将被写出,否则该字符被排除(看不懂)

    cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢?

    cut命令主要是接受三个定位方法:

    第一,字节(bytes),用选项-b

    第二,字符(characters),用选项-c

    第三,域(fields),用选项-d指定,-f来指定取出哪一段

    • grep    前面的cut是取出一行中的某些字符,而grep是来筛选某一行存在你需要的信息,则把该行拿出来
    # grep [-acinv] [--color=auto] '查找的字符串' filename
    
    参数:
    -a  将binary文件以text的方式查找数据
    -c  计算查找到匹配字符串的次数
    -i  忽略大小写
    -n  顺便输出行号
    -v  反向选择,即显示没有“查找字符串”的那一行
    --color=auto   将查找到的字符串的关键词加上颜色

    grep还有一些高级的用法,在我的另外一篇文章中有介绍:grep的高级用法


    2.排序命令:sort, wc,uniq

    主要用于在你不需要查看具体数据,而是只是想查看关键字的出现次数等情况。

    • sort    进行排序,根据不同的关键词。因为可能是字符排序,所以这里需要确定你的系统的编码,最好是LANG=C
    # sort [-fbMnrtuk] [file or stdin]
    参数:
    -f  忽略大小写
    -b 忽略最前面的空格符部分
    
    -M 以月份名字进行排序(默认是以文本类型进行排序)
    -n  使用纯数字进行排序
    -r  反向排序
    
    -u  就是uniq,相同的数据只出现一行
    -t   分隔符,默认以 [tab]  键为分割
    -k  以那个区间来进行排序的意思
    #对passwd文件进行排序
    $ cat /etc/passwd | sort
    ...
    
    #如果需要取第三列来进行排序呢
    $ cat /etc/passwd | sort -t ':' -k 3

    sort命令很有用,解决很多时候我们需要排序的麻烦。

    • uniq     相当于sort的 -u 选项  取出一些重复的数据。
    # uniq [-ic]
    
    -i 忽略大小写 
    -c 对重复信息计数
    • wc    计数工具 
    wc [-lwm]
    参数:
    -l   仅列出多少行
    -w  仅列出多少字(英文单词)
    -m  多少字符

    默认不加选项的会输出三个数字,分别代表行,字数,字符数

  • 相关阅读:
    Confusion Matrix of sklearn
    A way to compress picture by KMeans algorithm
    naive bayes of sklearn
    Cloud-native?
    WPF 如何Debug数据绑定
    WPF 选择文件夹
    WPF ListBox 实现多行多列定制内容显示
    Java进阶专题(二十) 消息中间件架构体系(2)-- RabbitMQ研究
    Java进阶专题(十九) 消息中间件架构体系(1)-- ActiveMQ研究
    Docker安装RabbitMQ与Kafka
  • 原文地址:https://www.cnblogs.com/panhao/p/5322522.html
Copyright © 2011-2022 走看看