GREP:文本过滤工具
- 常用选项:
- —color=auto:对匹配到的内容进行着色显示
- -v:显示不能够被匹配到的行
- -i:忽略大小写
- -o:仅显示匹配到的字符
- -q:静默模式,不输出任何信息
- -A n:表示after,匹配模式内容的后n行
- -B n:表示before,匹配模式内容的前n行
- -C n:表示center,匹配模式内同的前后各n行
- -E:使用ERE(扩展的正则表达式),等同于egrep
- 练习题
SED:文本编辑工具
文本流编辑器,sed是一个非交互式的面向字符流的编辑器,能够同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以只匹配搭配的模式内容输入搭配屏幕上,还可以对源文件改动,但是不输出到屏幕上
- 格式语法
- 命令格式: sed 选项 命令 文件名
- 脚本格式: sed 选项 -f ‘sed scripts’ 文件名
- 常用选项:
- -n : 只打印模式匹配到的行
- -e: 直接在命令行模式进行sed编辑,默认
- -f: 将sed的动作写在另一个文件,用-f filename执行文件内的动作
- -r: 支持看哟站的表达式
- -i: 直接修改文件内容
- 查询文件的方式
- 使用行号和行范围:
- x : 行号sed -n ‘xp’ filename 可以打印指定的行
- x,y : 从x到y的行
- x,y! : 范围之外的内容
- /pattern :查询包含模式的行,支持正则表达式
- /pattern1/ , /pattern2/ : 查询包含两个模式的行
- /pattern,x : x行前查询包含匹配模式的行
- x,/pattern : x行后查询包含匹配模式的行
编辑命令
- p : 打印匹配到的行(-n)
- = : 显示文件行号
- a\ : 在指定行后添加新内容
- i\ : 在指定行前添加新内容
- c\ : 使用新文本替换行
- d : 可以删除指定的行
- w filename : 写文本到另一个文件中
- r filename : 从另一个文件中读文件
- s/// : 替换
- g : 行内全局替换
- p : 显示替换成功的行
- w : 将替换成功的结果保存至指定的文件
- q : 第一个模式匹配后立即退出
- {} : 在定位行执行的命令组,用逗号分隔
- g:将模式2粘贴到/pattern n/
- 取消注释行 sed -i ‘1,10s@^#+(.*)$@\1@g’ path/to/somefile
AWK:文本报告生成器
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为 强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
使用方法
- 命令模式:awk 选项 ‘匹配内容+动作’ 文件名
- 脚本模式:awk -f 指定命令脚本
- 常用选项
- -F:指定分隔符
- -v:指定用户自变量
- -f:从脚本文件中读取awk命令
- 匹配内容
- 正则表达式:
- 关系表达式:使用运算符进行操作,可以是字符串或者数字比较测试
- 模式匹配表达式:用运算符~(匹配)和!~(不匹配)
- BEGIN语句块,PATTERN语句块,END语句块
- 动作
- 动作有一个或多个命令、函数、表达式组成,之间由换行符分割开,主要部分是:变量数组扶着,输出命令,内置函数,流程控制语句
- awk常见用法
- awk -F: ‘$ 4==1000 {print $7}’ /etc/passwd
- -v 传递用户自定义变量 a=3—->$a—->$3
- printf:格式化输出
- 内置变量
- FILENAME:文件名称
- NR:行号
- NF:列数
- $0:整行数据
- ARGC:命令行参数个数
- ARGV:,命令行参数排序
- FNR:$0浏览文件的记录
- FS:等价-F
- RS:输入记录分隔符,默认为换行符
- OFS:输出域分隔符,默认为空格
- ORS:输出记录分隔符,默认为换行符
- ENVIRON:支持队列中系统环境变量的使用
- awk运算符
- 关系运算符,==,!=,>=
- 算数运算符,加减乘除
- 赋值运算符,+=,-=,=
- 逻辑运算符,&& , ||
- 正则运算符,~(匹配)和!~(不匹配)
- 条件判断
- if (….) action1 else action2
- 循环
- for(i=1;i<n;i++) action
- while (……) action
- break,continue,结束循环
- 数组
- array_name[index]=value
- delete arrat_name[index]
- 支持多维数组
