1、grep的用法
grep(Global Research):根据模式匹配,进行字符串的搜索,并将匹配到的字符串所在的行显示出来。模式(pattern)是指文本字符以及正则表达式的元字符组合而成的匹配条件。
grep命令的使用格式如下:
grep [option] 'pattern' [file1,file2,....]
其中常用的option有:
-i :忽略大小写
--color :将匹配到的字符用颜色显示
-v :反向选择,显示没有被匹配到的行
-o :只显示被匹配到的字符串,而不是显示整行
-E :使用扩展正则表达式
-A# :After,显示匹配到的字符串所在行 及其后面#行
-B# :Before,显示匹配到的字符串所在行 及其前面#行
-C# :Context,显示匹配到的字符串所在的行 及其上下#行
其中pattern使用字符串或正则表达式均可,pattern要用单引号引起来。若使用扩展正则表达式需使用选项-E
2、sed的用法
sed是一款流编辑器,通过文件或者管道将文件内容按行读入内存空间(此内存空间称为模式空间),在模式空间中对读入的行进行过滤和处理,并将处理的结果输出,默认输出到屏幕上。每行处理完成再依次读入下一行进行处理。sed默认不改变原文件。
sed的基本语法格式:
sed [option] 'AddressCommand' file1,file2,....
sed 的AddressCommand也可以使用以下格式:
Address{
command1
command2
command3
}
右大括号必须单独处于一行,command后不能添加空格。
Address的指定方法有以下几种:
1、#1,#2 第 #1 行至 #2 行之间的所有行,中间用逗号隔开
2、/pattern/ 模式pattern为字符串或正则表达式
3、/pattern1/,/pattern2/ 第一次被pattern1匹配到的行 与 第一次被pattern2匹配到的行之间的所有行
4、# 第 # 行
$ 为最后一行 $-1 为倒数第二行
5、#,+n 从第 # 行开始向后的 n 行,共 n+1 行。
Command主要有以下几种:
其中 r 命令可以使用:
n r file 将指定的 file 中的内容添加到指定的第 n 行处。
其中 w 命令可以使用:
w file 将指定的 Adress 范围的内容保存至指定的file中。
其中 s 命令的使用格式为:s/pattern/string/[flags]
pattern 匹配需要替换的内容
string 要替换为的新内容,string为以下几种时有特殊意义【
& 引用pattern匹配的整个字符串
\n 支持后向引用,前提是pattern中使用分组\(\)
\ 转义字符
】
flags 为修饰符,可以取多个值【
n 取值1-512之间数字,表示对一行中被pattern匹配到的第n次匹配到的结果进行替换。
g 对全局匹配到的都替换,没有g只替换第一次匹配到的结果。
p 打印模式空间的内容(即打印被模式匹配的行)
w file 将模式空间(被模式匹配的行)写入到file中
】
注意:s 命令中分隔符 斜线 若在pattern和string中需要使用时,要使用转义字符\
option常用的主要有:
-n 静默模式,不显示模式空间的内容,即不在屏幕上打印
-i 直接修改原文件(一般不建议使用)
-e script1 -e script2 ... 可同时执行多个脚本(不是脚本文件)
-f /path/to/script-file 从script-file中读取脚本指令
-r 使用扩展正则表达式
3、awk的用法
awk是一个报告生成工具,能将文本中的信息格式化以后进行显示。
awk的工作机制是:逐行扫描文本,并对每行进行切片,寻找匹配特定模式的行,如果该行匹配,按照用户想要的操作对其进行处理;否则,对该行不做任何处理。 如果没有指定匹配模式pattern,匹配所有行,如果没有指定动作action,按默认动作把匹配的行显示到屏幕上,默认动作是print。
awk默认以空白分隔符 对每行文本进行切片保存后,可以使用$1 $2 $3 ...进行每个字段的引用,$0表示引用整行文本
awk的使用格式:
awk [option] 'script' file1 file2 ... 表示从多个文件中读取文本信息,并根据script将其格式化后进行显示。script可分为两部分: pattern和action 因此awk的使用格式也可为:
awk [option] 'pattern {action}' file1 file2 ...
注意:awk的action要用大括号括起来
awk的内置变量:
awk的这些内置变量又可分为:记录变量和数据变量
awk内部变量之记录变量:
FS(filed separator )默认是空白字符,指定读取文本文件时,所使用的输入分隔符、
OFS( Output Filed Separator)、
ORS(Output Filed Separator)、
RS( Record Separator)输入文本信息所使用的换行符
awk内部变量之数据变量:
NR(the number of input records)awk命令所处理的记录数,如果有多个文件,这个数目会把处理的多个文件中的行统一计数
FNR:当前正在处理的文件已处理多少行的行数,各自计数
NF(Number of Field)统计当前正在处理的行有多少字段
awk区分变量名的大小写,打印变量的值时不需要加$符号,加$符号的是用来打印字段。如$1 $2等
awk定义变量的方式有两种:
1、使用 -v 选项:-v var=value 每定义一个变量就使用一次 -v 选项。
2、使用BEGIN模式时进行定义:BEGIN{var=value;语句}
awk的操作符:
算术运算符:
赋值运算法:
布尔值:任何非0值或非空字符串都为真,反之为假
比较操作符:x ~ y x字符串如果能被y正则表达式模式匹配到为真
表达式间的逻辑关系 && ||
条件表达式 selector?if-true-exp:if-false-exp
awk的option:
-F fs 指定以fs作为输入分隔符
-v var=value 定义变量var的值为value
-f script-file 从脚本文件中读取脚本取代输入的处理脚本
awk常见的pattern类型:
1、正则表达式,格式为 /RegExp/
2、expression:表达式,其值为非0或非空字符时满足条件,如:$1== “abc”
3、Range :指定匹配范围,格式为pattern1,pattern2
4、BEGIN/END :特殊模式,仅在awk命令执行前运行一次或结束前运行一次。格式为 BEGIN{ }
5、Empty :空模式,只有action,没有pattern。会对每行都做处理
awk常用的action类型:
1、expression
2、Control statements :控制语句(如条件判断、循环语句、case语句、自定义语句)
3、Compound statements:
4、Input statements:
5、Output statements:
控制语句:
1、if-else 语法:if (条件) 动作1; else 动作2
2、while 语法:while (条件){动作1;动作2;....} while是用来循环字段的,当对每行的字段做单独处理时才使用while循环
3、do-while 语法:do {动作1,动作2,....}while (条件)
4、for 语法:for ( 变量;条件;计数器){动作1;动作2;....}
for可以用来遍历数组元素:for (i in array) {动作1,动作2,...}
5、case 语法:switch (expression) {case VALUE or /regexp/: 动作1,动作2,... default:动作1,...}
6、break和continue :常用于循环或case语句中
7、next :提前结束对本行文本的处理,并接着处理下一行文本,continue是用来处理字段的
awk经常使用的action:print、printf
print的使用:
print item1,item2,item3,.....
print命令后面的item可以省略,此时功能相当于print $0 ;item之间要用逗号分隔,如果想输出空白行,需要使用print “”
printf的使用:
printf format,item1,item2,item3,.....
与print最大的不同是,printf需要指定format;
format用于指定后面的每个item的输出格式
printf语句不会自动打印换行符: \n
format格式的指示符都以%开头,后跟一个字符,如:
%c 显示字符的ASCII
%d,%i 十进制整数
%e,%E 科学计数法显示数值
%f 显示浮点数
%g,%G 以科学计数法的格式或浮点数的格式显示数值
%s 显示字符串
%u 无符号整数
%% 显示%自身
format还可以有修饰符:
【
-表示左对齐,如%-d
+ 显示数值符号
N 显示宽带为N
】
本文转自 f_066 51CTO博客,原文链接:http://blog.51cto.com/ganmu/1770140,如需转载请自行联系原作者