预备知识:

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

它的符号是  "|"    管道只能处理经过前面一个命令传过来的正确信息,也就是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

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

  • uniq     相当于sort的 -u 选项  取出一些重复的数据。
# uniq [-ic]

-i 忽略大小写
-c 对重复信息计数
  • wc    计数工具
wc [-lwm]
参数:
-l 仅列出多少行
-w 仅列出多少字(英文单词)
-m 多少字符

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

【shell编程基础3】shell编程的组合应用之二:管道及其命令的更多相关文章

  1. Spark编程基础_RDD初级编程

    摘要:Spark编程基础_RDD初级编程 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素 ...

  2. linux学习19 shell脚本基础-bash脚本编程基础及配置文件

    一.shell脚本编程 1.编程语言的分类,根据运行方式 a.编译运行:源代码 --> 编译器(编译) --> 程序文件 C语言: b.解释运行:源代码 --> 运行时启动解释器,由 ...

  3. shell编程基础(四): shell脚本语法之函数及调试

    一.Shell脚本中的函数 和C语言类似,Shell中也有函数的概念,但是函数定义中没有返回值也没有参数列表.例如: #! /bin/sh fun(){ echo "Function fun ...

  4. 网络编程基础之TCP编程学习(一)

    网络编程基础了解 socket套接字 socket是一种通讯机制,它包含一整套的调用接口和数据结构的定义,他给应用程序提供了使用如TCP/UDP等网络通讯的手段. linux中的网络编程通过socke ...

  5. 第1章 网络编程基础(2)——Socket编程原理

    Socket编程原理 Socket是网络通信端点的一种抽象,它提供了一种发送和接收数据的机制. 流socket(SOCK_STREAM):双向.有序.无重复.并且无记录边界 数据报Socket(SOC ...

  6. 【C编程基础】多线程编程

    基础知识 1.基本概念 (1)线程,即轻量级进程(LWP:LightWeight Process),是程序执行流的最小单元. 线程是进程中的一个实体,是被系统独立调度和分派的基本单位. (2)线程同步 ...

  7. java网络编程基础——TCP网络编程三

    AIO实现非阻塞通信 java7 NIO2 提供了异步Channel支持,这种异步Channel可以提供更高效的IO,这种基于异步Channel的IO被称为异步IO(Asynchronous IO) ...

  8. java网络编程基础——TCP网络编程二

    1.半关闭的Socket 前面的服务器和客户端通信时总是以行为最小数据单位,但是在某些协议里,通信的数据单位可能是多行的,当出现多行数据时就 出现一个问题:Socket输出流如何表示输出数据已经结束. ...

  9. Shell编程(二)——shell的基础知识及常用命令

    shell的基础知识 一.bash有以下特点: 1.记录命令历史 2.指令和文件名补全 3.别名 alias rm='rm -i' 4.通配符 * 0个或多个字符 ?​匹配一个字符 5 输入输出重定向 ...

  10. IOS学习之十七:Grand Central Dispatch(GCD)编程基础

    IOS学习之十七:Grand Central Dispatch(GCD)编程基础   有过编程经验的人,基本都会接触到多线程这块. 在java中以及Android开发中,大量的后台运行,异步消息队列, ...

随机推荐

  1. gulp快速入门&初体验

    前言 一句话先 gulp 是一个可以简单和自动化"管理"前端文件的构建工具 先说我以前的主要工作,我主要是做游戏服务端的,用c++/python,所以我对东西的概念理解难免要套到自 ...

  2. sql 语句优化

    sql语句性能达不到你的要求,执行效率让你忍无可忍,一般会时下面几种情况. 网速不给力,不稳定. 服务器内存不够,或者SQL 被分配的内存不够. sql语句设计不合理 没有相应的索引,索引不合理 没有 ...

  3. 3月题外:关于GeoServer和OpenLayers3实用开源插件或组件的总结

    Geoserver篇 注意: 1)用法 GeoServer-Extension的使用方法:将jar包直接放入部署在tomcat上的geoserver/WEB-INF/lib文件夹中 2)在安装插件时, ...

  4. WinSCP 中普通用户以 root 身份登录 Linux

    版本说明: Windows 10 CentOS 7 WinSCP 5.7.7 (Build 6257) 问题背景 使用 WinSCP 登录 CentOS 上传文件,使用的是普通用户,且已加入 sudo ...

  5. ThinkPHP模板的知识(比较全的知识)

    php框架 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格 ...

  6. 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)

    2017年的golang.python.php.c++.c.java.Nodejs性能对比 本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不 ...

  7. JS获取网站StatusCode,若存在写入文件

    JS获取网站状态码,若网站存在,写入TXT文件,适用于IE. <script> //写文件      function writeFile(filename,filecontent){   ...

  8. 求int型正整数在内存中存储时1的个数

    题目描述: 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 输入描述: 输入一个整数(int类型) 输出描述: 这个数转换成2进制后,输出1的个数 输入例子: 5 输出例子: ...

  9. 1753: [Usaco2005 qua]Who's in the Middle

    1753: [Usaco2005 qua]Who's in the Middle Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 290  Solved:  ...

  10. PPAPI VS NPAPI

    flash player PPAPI 它的CPU和内存占用率会比较高,主要是因为缓存大多放在内存里而不是硬盘上.   npapi的flash跟ppapi的flash基本是一样的,只不过ppapi插件都 ...