【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
sort命令很有用,解决很多时候我们需要排序的麻烦。
- uniq 相当于sort的 -u 选项 取出一些重复的数据。
# uniq [-ic] -i 忽略大小写
-c 对重复信息计数
- wc 计数工具
wc [-lwm]
参数:
-l 仅列出多少行
-w 仅列出多少字(英文单词)
-m 多少字符
默认不加选项的会输出三个数字,分别代表行,字数,字符数
【shell编程基础3】shell编程的组合应用之二:管道及其命令的更多相关文章
- Spark编程基础_RDD初级编程
摘要:Spark编程基础_RDD初级编程 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素 ...
- linux学习19 shell脚本基础-bash脚本编程基础及配置文件
一.shell脚本编程 1.编程语言的分类,根据运行方式 a.编译运行:源代码 --> 编译器(编译) --> 程序文件 C语言: b.解释运行:源代码 --> 运行时启动解释器,由 ...
- shell编程基础(四): shell脚本语法之函数及调试
一.Shell脚本中的函数 和C语言类似,Shell中也有函数的概念,但是函数定义中没有返回值也没有参数列表.例如: #! /bin/sh fun(){ echo "Function fun ...
- 网络编程基础之TCP编程学习(一)
网络编程基础了解 socket套接字 socket是一种通讯机制,它包含一整套的调用接口和数据结构的定义,他给应用程序提供了使用如TCP/UDP等网络通讯的手段. linux中的网络编程通过socke ...
- 第1章 网络编程基础(2)——Socket编程原理
Socket编程原理 Socket是网络通信端点的一种抽象,它提供了一种发送和接收数据的机制. 流socket(SOCK_STREAM):双向.有序.无重复.并且无记录边界 数据报Socket(SOC ...
- 【C编程基础】多线程编程
基础知识 1.基本概念 (1)线程,即轻量级进程(LWP:LightWeight Process),是程序执行流的最小单元. 线程是进程中的一个实体,是被系统独立调度和分派的基本单位. (2)线程同步 ...
- java网络编程基础——TCP网络编程三
AIO实现非阻塞通信 java7 NIO2 提供了异步Channel支持,这种异步Channel可以提供更高效的IO,这种基于异步Channel的IO被称为异步IO(Asynchronous IO) ...
- java网络编程基础——TCP网络编程二
1.半关闭的Socket 前面的服务器和客户端通信时总是以行为最小数据单位,但是在某些协议里,通信的数据单位可能是多行的,当出现多行数据时就 出现一个问题:Socket输出流如何表示输出数据已经结束. ...
- Shell编程(二)——shell的基础知识及常用命令
shell的基础知识 一.bash有以下特点: 1.记录命令历史 2.指令和文件名补全 3.别名 alias rm='rm -i' 4.通配符 * 0个或多个字符 ?匹配一个字符 5 输入输出重定向 ...
- IOS学习之十七:Grand Central Dispatch(GCD)编程基础
IOS学习之十七:Grand Central Dispatch(GCD)编程基础 有过编程经验的人,基本都会接触到多线程这块. 在java中以及Android开发中,大量的后台运行,异步消息队列, ...
随机推荐
- unity3d教程-01-安装及使用Unity
我们前往unity官网:https://unity3d.com/cn/ 选择下载个人版,免费使用,功能齐全,就是在应用启动时有unity的动画 支持正版从我做起 整个安装过程需要网络的支持 下载安装程 ...
- sql 删除重复数据,保留重复数据第一条
SELECT row=ROW_NUMBER() OVER(PARTITION BY 重复字段一,重复字段二 ORDER BY GETDATE()) ,* FROM 筛选重复表名 具体实现如 ...
- 1121: [POI2008]激光发射器SZK
1121: [POI2008]激光发射器SZK Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 574 Solved: 475[Submit][Sta ...
- sed 删除换行符
sed 删除换行符 sed ':label;N;s/\n/:/;b label' filename sed ':label;N;s/\n/:/;t label' filename 上面的两条命令可以实 ...
- 【转】Django中的request与response对象
关于request与response 前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Respon ...
- SolrCloud的介绍
SolrCloud(solr云)是Solr提供的分布式搜索方案. 当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud. 当索引量很大,搜索请求并发很高时,同样需要使用SolrClou ...
- StudyJams学习历程总结
Study Jams 是一个学习 Google 在线课程的活动.该活动由学员自发组建课程学习小组,旨在带领小组成员入门 Android 开发,最终将 Android App 上载至 Google Pl ...
- CSS常见兼容性问题总结
原文链接:渔人码头 http://www.cnblogs.com/imwtr/p/4340010.html?utm_source=tuicool&utm_medium=referral 浏览器 ...
- Chrome 开发工具 Workspace 使用
前端开发中我们经常要在浏览器中做一些细节调整,比如对 CSS 的微调,最快的方式当然是直接在 Chrome 的开发者工具中调整,但问题在于在控制台中调试好的数值我们还需要再在 CSS 源码中再写一次, ...
- jmeter配置、安装
一. 工具描述 apache jmeter是100%的java桌面应用程序,它被设计用来加载被测试软件功能特性.度量被测试软件的性能.设计jmeter的初衷是测试web应用,后来又扩充了其它的功能.j ...