正则表达式
grep:显示匹配行
v:反显示
e:使用扩展正则表达式
grep after profile //匹配profile里的after
重复操作符:
? 匹配0到1次。
* 匹配0到多次。
+ 匹配1到多次。
{n} 匹配n次。
{n,} 匹配n到多次。
{n,m} 匹配n到m次。
- 查询包含三个a的行,\<,\>: 单词首尾边界
复制代码
- 显示含有两个a的行
复制代码
- ^ :行首 ,显示行首是aa的行
复制代码
-. 意味着god与good之间有任意字符
复制代码
[1249a],[^12],[a-k] 字符序列单字符占位
复制代码
文本处理
cut:显示切割的行数据
-f:选择显示的列
-s:不显示没有分隔符的行
-d:自定义分隔符
复制代码
sort:排序文件的行
n:按数值排序
r:倒序
t:自定义分隔符
k:选择排序列
u:合并相同行
f:忽略大小写
复制代码
显示grep文件有多少行
sed:行编辑器
-n: 静默模式,不再默认显示模式空间中的内容
-i: 直接修改原文件
-r: 表示使用扩展正则表达式
d: 删除符合条件的行;
复制代码
指定行插入
故用-i插入
利用正则表达式只替换aaa单词
awk
awk是一个强大的文本分析工具。
相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。
简单来说awk就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk -F '{pattern + action}' {filenames}
支持自定义分隔符
支持正则表达式匹配
支持自定义变量,数组 a[1] a[tom] map(key)
支持内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行 -F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
支持函数
print、split、substr、sub、gsub
支持流程控制语句,类C语言
if、while、do/while、for、break、continue
# awk '{split($3,date,"-");if(date[2]=="01"){ name[$1] +=$5;if($2=="0"){role[$1]="M"
复制代码
# awk '{split($3,date,"-");if(date[2]=="01"){ name[$1] +=$5;if($2=="0"){role[$1]="M"}} ' awk.txt
复制代码