linux_file_grep

227 阅读2分钟

正则表达式

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:自定义分隔符

f1表示显示第一列

sort:排序文件的行

n:按数值排序
r:倒序
t:自定义分隔符
k:选择排序列
u:合并相同行
f:忽略大小写

wc -l grep.txt
显示grep文件有多少行
利用管道显示etc文件夹里文件列数

sed:行编辑器

-n: 静默模式,不再默认显示模式空间中的内容
-i: 直接修改原文件
-r: 表示使用扩展正则表达式
d: 删除符合条件的行;

指定行插入

但再次打开该文件,没有显示插入内容

故用-i插入

将aaa替换成bbb
利用正则表达式只替换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