正则表达式:
egrep是grep的扩展,grep有的功能egrep都有
grep命令
grep命令的名称是来自于全局搜索正则表达式并打印文本行(Global Search Regular Expression and Print out the line)的缩写。
语法如下
grep [-cinvABC] 'word' filename
选项
-
-c:表示打印行数
-
-i:表示忽略大小写
-
-n:表示输出符合要求的行及行号
-
-v:反向选择。找出没有关键字的那一行。
-
-A:后面跟数字,过滤出符合要求的行以及下面n行。
-
-B:后面跟数字,过滤出符合要求的行以及上面n行。
-
-C:后面跟数字,过滤出符合要求的行以及上和下面n行。
-
-E:支持扩展正则表达式。同egrep
-
-P:支持Perl正则表达式。
-
-F:不支持正则表达式,以字面意思匹配。
sed命令
sed是一个非交互式的文本编辑器,可以对文本文件以及标准输出进行编辑。
sed命令会将文件或标准输出中一次选取一行数据,复制进缓冲区,然后读取编辑的子命令,对行进文本行编辑,重复此过程,直到所有的文本行处理完毕。
sed命令编辑的文件是原始文件的副本,因此编辑操作并不影响原文件,只输出到屏幕,如果想保存,就重定向到磁盘文件即可。
sed和grep相比,sed也能实现grep的功能,但是有点麻烦,而且没有用颜色显示,强项在于替换
sed命令的使用方法
语法:
sed [选项] [脚本] [输入文件]
选项:
-n:取消默认输出。只显示特殊处理的行。
-e:运行执行多个脚本
-f:后面跟脚本名,从脚本中读取命令
-i:直接修改原始文件。
-I:大写i,不区分大小写。
-l:指定行的长度。
-r:在脚本中使用扩展正则表达式。
-s:默认情况下,sed会把命令行指定的多个文件名作为一个长的连续的输入流。而GNU sed则允许把他们当作单独的文件,这样的话,正则表达式不进行跨文件匹配。
-u:最低限度的缓存输入与输出。
脚本:
用户可以将一系列的sed命令写在一个脚本文件中,sed会从该文件中读取并依次执行各个命令。
输出文件:
表示输入文件,没有指定输入文件,则从标准输入中读取。
三种工作方式:
1.在命令行直接执行sed命令。sed [选项] [命令] [提供数据的文件]
2.将sed的操作写入脚本,通过-f指定脚本。sed [选项] -f [脚本] [提供数据的文件]
3.将sed写入脚本,解释器为 #! /bin/sed。./scrpt [提供数据的文件]
sed的常用操作以及使用方法
sed编辑命令的基本语法-总的语法
语法:
[位置参数1[,位置参数2]] 子命令 [子命令参数]
介绍:
位置参数:可以用行号或者正则来表示。指定了位置参数,对匹配的行进行操作。没有指定位置参数对全部的内容进行操作。
子命令:sed提供的子命令,用来实现编辑操作。
子命令参数:子命令的参数。
子命令:
p:将缓存区的文本行输出出来。
s:替换命令。可以通过标志决定替换的模式,g:全局。十进制数字:第几个。p:第一个并输出。w:第一个并输出到磁盘。空:替换第一个。
d:删除文本。
a:在匹配的行的下面另起一行追加内容。
i:在匹配的行的上面另起一行追加内容。
选择文本 p
子命令p可以把位置参数筛选出来的参数,显示出来。。语法如下:
[位置参数1[,位置参数2]] p
awk命令
awk的设计使得他非常适合处理由行列组成的文本数据。awk还是一种编程语言环境,他提供了正则表达式的匹配,流程控制,运算符,表达式,变量,以及函数等一系列的程序设计语言所具备的特性。
awk命令的基本语法
awk命令的基本语法:
awk 匹配模式 { 执行的操作 }
awk的工作流程
awk处理数据时,他会反复执行一下4个步骤:
1.自动的从数据文件中读取文本的行。
2.自动更新 awk 的内置系统变量的值。例如:列数变量NF,行数变量NR,行变量$0,各个变量$1,$2等。
3.依次执行程序中的所有的匹配模式及其操作。
4.当执行完程序的所有匹配模式和操作后,如果数据文件中仍有未读取的数据行,则返回第一步重复执行1~4的操作。
awk的执行方式
用户通过3种方式来执行awk程序,分别是命令行,awk脚本,可执行文件。
命令行语法 awk 'awk程序语句' 待处理的文件 。例如:awk '{ print }' a.txt
awk脚本语法 awk -f awk脚本 待处理的文件 。awk脚本里依次写上awk程序语句即可。
可执行脚本语法 awk脚本 待处理的文件 。但是一定要指定命令解释器 #! /bin/awk -f 。脚本内容依次写上awk的程序语句即可。
特殊字符
$0:表示整个当前行
$1:每行第一个字段
NF:字段数量变量
NR:每行的记录号,多文件记录递增
FNR:与NR类似,不过多文件记录不递增,每个文件都从1开始
FS:BEGIN时定义分隔符,默认是空格或制表符。
RS:输入的记录分隔符,默认是换行符。awk每次读取一行进行处理,通过指定行分隔符,来决定awk一次读取多少行。例如:指定行分隔符为空行,awk每次读取有空格的地方。
\t:制表符
\n:换行符
~ :匹配,与==相比不是精确比较
!~:不匹配,不精确比较
== :等于,必须全部相等,精确比较
!= :不等于,精确比较
&&:逻辑与
||: 逻辑或
+:匹配时表示1个或1个以上
/[0-9][0-9]+/: 两个或两个以上数字
/[0-9][0-9]*/ : 一个或一个以上数字
OFS:输出字段分隔符, 默认也是空格,可以改为制表符等
ORS:输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕
-F ':' :指定分隔符
awk的模式匹配
awk的匹配模式主要包括关系表达式,正则表达式,混合模式,BEGIN模式,END模式等。
关系表达式
awk提供了许多关系运算符,例如大于> ,小于< ,等于==等,awk可以以关系表达式作为匹配模式,当文本行满足关系表达式时,则会执行响应的操作。