三剑客之sed,awk,grep,egrep

Sed是文本处理工具,依赖于正则表达式,能够读取文本内容,根据指定条件对数据进行添加、删除、替换等操做,普遍应用于shell脚本,以完成自动化处理任务。
Sed在处理数据时默认不直接修改源文件,而是把当前处理的行存储在临时缓冲区中,全部指令都在缓冲区中操做,处理完成后,把缓冲区内容默认输出到屏幕,接着处理下一行内容,这样不断重复,直到文件末尾,文件自己内容并无作任何改变。

1、Sed三大功能:
(1)读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中;
(2)执行:默认状况下,全部的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,不然 sed 命令将会在全部的行上依次执行;
(3)显示:发送修改后的内容到输出流,再发送数据后,模式空间将会被清空。
***注意:默认状况下,全部的 sed 命令都是在模式空间内执行的,所以输入的文件并不会发生任何变化,除非是用重定向存储输出。
2、Sed命令两种格式:
其中,“参数”是指操做的目标文件,当存在多个操做对象时用,文件之间用逗号“,”分隔;而 scriptfile 表示脚本文件,须要用“-f”选项指定,当脚本文件出如今目标文件以前时,表示经过指定的脚本文件来处理输入的目标文件。正则表达式

sed [选项] ‘操做’ 参数
sed [选项] -f scriptfile 参数shell

(1)常见的 sed命令选项:

-e :表示用指定命令或者脚原本处理输入的文本文件;
-f :表示用指定的脚本文件来处理输入的文本文件;
-h :显示帮助;
-n :表示仅显示处理后的结果;
-i :直接编辑文本文件;ide

(2)常见的操做选项:工具

a:增长,在当前行下面增长一行指定内容;
c:替换,将选定行替换为指定内容;
d:删除,删除选定的行;
i :插入,在选定行上面插入一行指定内容;
p:打印,若是同时指定行,表示打印指定行;若是不指定行,则表示打印全部内容,一般与 -n选项一块儿使用;
s :替换,替换指定字符;
y :字符转换;命令行

1、awk简介:
在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,能够在无交互的状况下实现至关复杂的文本操做,被普遍应用于 Shell 脚本,完成各类自动化配置任务。
2、常见用法:
单引号加上大括号“{}”用于设置对数据进行的处理动做。awk 能够直接处理目标文件,也能够经过“-f”读取脚本对目标文件进行处理。
awk 将文本文件中的一行视为一个记录,而将一行中的某一部分(列)做为记录中的一个字(域)。为了操做这些不一样的字段,awk 借用 shell 中相似于位置变量的方法, 用$一、$二、$3…顺序地表示行(记录)中的不一样字段。另外 awk 用$0 表示整个行(记录)。不一样的字段之间是经过指定的字符分隔。awk 默认的分隔符是空格。awk 容许在命令行中用“-F 分隔符”的形式来指定分隔符。code

awk 【选项】‘模式或条件 {编辑指令}’ 文件1 文件2
awk -f 脚本文件 文件1 文件2
1)特殊的内建变量(可直接用)对象

FS:指定每行文本的字段分隔符,默认为空格或制表位(tab键);
NF:当前处理的行的字段个数;
NR:当前处理的行的行号(序数);
$0:当前处理的行的整行内容;
$n:当前处理行的第 n 个字段(第 n 列);
FILENAME:被处理的文件名;
RS:数据记录分隔,默认为\n,即每行为一条记录;
(2)关系运算符号:只有当条件为真,才执行指定的动做。
大于(>);小于(<);大于等于(>=);小于等于(<=);
等于(==)、不等于(!=);
&&(与)、||(或)、!(非);
加(+)、减(-)、乘(*)、除(/)、取余(%)、乘方(^);blog

1、grep命令ip

-n: 表示显示行号
-i : 表示不区分大小写刷选
-v : 表示方向查找it

(1)查找特定的字符:
grep -n 'the' abc.txt //查找有the的行,并显示出行号
1
grep -in ‘the’ abc.txt //不区分大小写查找有the的行,并显示行号
1
若是是想查找不包含the的行,-vn选项便可:
grep -vn ‘the’ abc.txt //查找不包括the的行,并显示出行号
1
(2)中括号 [ ] 查找集合字符:
例如:当咱们须要查找两个字符 “aboyz” 和 “abiyz” 这两个字符时,其中ab和yz都是相同的,能够利用 [ ]来匹配字符,[ ]中不论有几个字符,都仅表明一个字符,
元字符
三剑客之sed,awk,grep,egrep

相关文章
相关标签/搜索