Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具
第三章 查找与替换
概括:本章讨论的是编写Shell脚本时经常用到的两个基本操作:文本查找、文本替换。
3.1 查找文本
如需从输入的数据文件中取出特定的文本行,主要的工具为grep程序。POSIX采用三种不同grep变体:grep、egrep、fgrep整合为单个版本,通过不同的选项,分别提供这三种行为模式。
who | grep -F root
上面使用-F选项,以查找固定字符串root。事实上,只要匹配的模式里未含有正则表达式的meta字符,则grep默认行为模式就等同于使用了-F。
3.2 正则表达式
POSIX的正则表达式有两种,基本正则表达式(BRE)以及扩展正则表达式(ERE)。
sed是处理简单字符串替换的主要工具。
在某些程序语言里,单个字符串可能包含数行,那种情况下,^与$指的分别是字符串的开头与结尾。
正则表达式匹配范例:
表达式 匹配
tolstoy 位于一行上任何位置的7个字母:tolstoy
^tolstoy 7个字母tolstoy,出现在一行的开头
tolstoy$ 7个字母tolstoy,出现在一行的结尾
^tolstoy$ 正好包括tolstoy这7个字母的一行,没有其他的任何字符
[Tt]olstoy 在一行上的任意位居中,含有Tolstoy或是tolstoy
tol.toy 在一行上的任意位居中,含有tol这3个字母,加上任何一个字符,再接着toy这三个字母
tol.*toy 在一行上的任意位居中,含有tol这3个字母,加上任意的0或多个字符,再继续toy这三个字母
区间表达式匹配规则:
\{n\} 前置正则表达式所得结果重现n次
\{n,\} 前置正则表达式所得结果重现至少n次
\{n,m\} 前置正则表达式所得结果重现n至m次
在s命令里以g结尾表示的是,全局性。如:
$ echo Tolstoy reads well. Tolstoy writes well. >example.txt 输入样本
$ sed 's/Tolstoy/Camus/' < example.txt 没有设置g
Camus reads well. Tolstoy writes well.
$ sed 's/Tolstoy/Camus/g'< example.txt 设置了'g'
Camus reads well. Camus writes well.
$sed 's/Tolstoy/Camus/2' < example.txt 仅替代第二个匹配者
Tolstoy reads well.Camus writes well.
sed -n '10,42p' foo.xml 仅打印10-42行
3.3 字段处理
cut命令用以剪下选定的字符范围或字段,join则是用来结合记录中具有共同键值的字段的文件。
awk多半用于简单的“命令行程序”,当想要只显示选定的字段,或是重新安排行内的字段顺序时,就是awk派上用场的时候了。
awk '{ print $1}' file 打印第一个字段
awk '{ print $2,$5}' file 打印第2与第5个字段
awk '{ print $1,$NF}' file 打印第一个与最后一个字段
awk 'NF>0 {print $0}' file 打印非空行
awk 'NF>0' file 同上
awk -F '\t' '{if($8==2){print }}' 打印第8列为2的行
第四章 文本处理工具
摘要:本章总共介绍了约30种处理文本文件的好用工具。它们都是功能很强的工具组,可用来编写Shell脚本。
4.1 排序文本
sort -t: -k1,1 file 以冒号隔开的第一个字段进行排序
sort -t: -k2nr,2 file 从字段2起始处开始,以数值类型反向排序并结束于字段3的结尾
sort -t: -k2n -k3n file 先以第二列排序,在以第三列排序
sort -t: -k2n -u file 输出键值字段匹配的唯一记录
4.2 删除重复
sort file |uniq 显示唯一的排序后的记录
sort file |uniq -c 计数唯一的排序后的记录
sort file |uniq -d 仅显示重复的记录
sort file |uniq -u 仅显示未重复的记录
4.3 重新格式化段落
fmt -s -w 10 file 长度大于10的行格式化为短的行
4.4 计算行数、字数以及字符数
echo hello wrold |wc 计算行数、字数、字节数
echo hello world |wc -c 计算字节数
echo hello world |wc -l 计算行数
echo hello world |wc -w 计算字数
wc file1 file2 计算两个文件里的数据
4.5 打印
4.6 提取开头或结尾数行
head -n file 输出文件的前n行
tail -n file 输出文件的后n行
Shell脚本学习指南 [ 第三、四章 ] 查找与替换、文本处理工具的更多相关文章
- Shell脚本学习指南 [ 第一、二章 ] 背景知识、入门
摘要:第一章介绍unix系统的发展史及软件工具的设计原则.第二章介绍编译语言与脚本语言的区别以及两个相当简单但很实用的Shell脚本程序,涵盖范围包括了命令.选项.参数.Shell变量.echo与pr ...
- 笔记——shell脚本学习指南
<shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...
- 转 shell脚本学习指南
shell脚本学习指南 以下八点不敢说就能成为你shell脚本学习指南de全部,至少可以让你编写出可靠的shell脚本. 1. 指定bashshell 脚本的第一行,#!之后应该是什么?如果拿这个问题 ...
- Shell脚本学习指南笔记
Shell脚本学习指南 作者:Danbo 2015-8-3 脚本编程语言与编译型语言的差异 许多中型.大型的程序都是用编译型语言写的,例如:C.C+.Java等.这类程序只要从源代码(Source C ...
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
- 《Shell脚本学习指南》书籍目录
摘要:Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的.但是它比Windows下的批处理更 ...
- 《shell脚本学习指南》学习笔记之入门
为什么要使用shell脚本? shell脚本能够轻易处理文件与目录之类的对象,而且是各UNIX系统之间经过POSIX标准化的通用的功能,因此Shell脚本只要“用心写”一次,即可应用到很多系统上,因此 ...
- shell脚本学习指南-学习(1)
1.先看下面这个命令: $who | wc -l 计算当前登陆的用户个数: $who 当前登陆的有哪些用户: pipeling( | )可以在两个程序之间建立管道,左侧的结果成为右侧的 ...
- Shell脚本学习指南笔记(一)
脚本语言通常是解释型的,这类程序的运行.是由解释器读入程序代码,并将其转换成内部的形式, 再执行,解释器本身是一般的编译型程序. 第一行的开头处使用#!这两个字符,当内核扫描到改行的其余部分,看是否存 ...
随机推荐
- spring boot & mybatis集合的坑
因为是使用的mybatis逆向工程自动生成的实体类和dao层,然后在读取某一个表的content字段时出现问题. 问题描述:在mysql数据库里可以直接查询到这个字段的内容,但是使用java相关的方法 ...
- window服务的使用
目前的项目中使用很多服务来进行实现.服务是依靠windows操作系统来实现.可以是定时器类型,比如定时执行费时的任务,这种任务时最多.也可以是一些服务(SOAP)的宿主,不在限制与iis,不现在限制于 ...
- Monkey安装和使用介绍
安装步骤1)安装sdk环境在系统环境变量中配置 ANDROID_HOMED:\sdk PATH%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%A ...
- 洛谷 P2362 围栏木桩
题目描述 某农场有一个由按编号排列的n根木桩构成的首尾不相连的围栏.现要在这个围栏中选取一些木桩,按照原有的编号次序排列之后,这些木桩高度成一个升序序列.所谓的升序序列就是序列中的任何一个数都不小于它 ...
- Educational Codeforces Round 11 C hard process_补题——作为司老大的脑残粉
司老大当时教了一种姿势枚举连续K个0,说实话当时比赛写这题完全蒙了 纵然后来知道思路还是写了一段时间 真的是.. 题目大意 n长度的序列,由0 1构成 我们可以改变 k个0为1 求可以得到的最长连续1 ...
- 解决IllegalBlockSizeException:last block incomplete in decryption异常
解决IllegalBlockSizeException:last block incomplete in decryption异常分类: webkit android最近做个加解密的实现,虽然实现了, ...
- Evaluate|GC content|Phred|BAC|heterozygous single nucleotide polymorphisms|estimate genome size|
(Evaluate):检查reads,可使用比对软件:使用SOAPaligner重新排列:采用massively parallel next-generation sequencing technol ...
- 关于windows server 2003 IE 不能访问 https问题
https://xx.wosign.com/FAQ/Windows2003_server_sha256_support_problem.html 补丁地址: https://xx.wosign.com ...
- Spring框架 aop中的操作术语
Joinpoint 连接点 Pointcut 切入点 Advice 通知/增强 举例: 后置通知,不抛出异常则执行此通知,抛异常则不执行 最终通知,抛不抛异常都通知 其他通知都是环绕通知的衍生 ...
- 高德定位腾讯定位在APP上无法开启定位权限的解决方案
[备注]公司项目中遇到的问题,如果你在团队工作其中定有不少配合方面的问题,其中的思路是可以借鉴的,因为这也许正是你们现在遇到的问题,总结的不好的地方还请多多指教 因为项目需求的确定,定位成了必不可少的 ...