一、grep工具
- grep 'pattern' 待搜索文本 fgrep 'pattern' 待搜索文本
- 两者区别: fgrep中 'pattern'并不解释为正则表达式
- -c:计算符合条件的行数
- -n :搜索的结果中自动添加行号
- -v : 输出符合搜索结果的补集
- -i :搜索时忽略大小写
- -A n A是After的意思,表示将满足条件的行,下面n行输出出来
- -B n B是before的意思,表示将满足条件的行,上面n行输出出来
- grep -l 'pattern' 文件名 查询该文件的内容是否包含符合pattern的内容,符合则输出该文件名
二、sed工具
- sed 结构: sed [options] ‘pattern 操作’ 输入文件
- sed工作逻辑
- sed 内置变量
- $d 读入文件的最后一行
- sed常见option-[options]
- -e:以选项中的指定的script来处理输入的文本文件
- -f:以选项中指定的script文件来处理输入的文本文件
- -n:仅显示script处理后的结果
- p:筛选行
- sed 不是筛选行的强项,优先使用grep
- 根据行号筛选:sed -n '2,$p' file.text # 筛选从2至最后一行
- 根据pattern匹配筛选:sed -n '/pattern/p' file.text
- sed常见 ‘pattern 操作’
- 删除操作:d命令
- sed '/^$/d' file # 删除空白行
- sed '2,$d' file.text # 删除2至最后一行,逗号表示“至”
- 替换操作:s/pattern/replace/g
- g 参数:设置全局替换
- 行上插入内容:i插入内容
- sed '/^test/ithis is a test line' file # 将 this is a test line 追加到以test开头的行前面
- 行下追加内容:a追加内容
- sed '/^test/athis is a test line' file # 将 this is a test line 追加到 以test 开头的行后面
- 写入文件:w
- sed -n '/test/w file' example # 在example中所有包含test的行都被写入file里
- 删除操作:d命令
三、awk工具
- awk 结构:awk [options] 'BEGIN{ [options] 操作} pattern{ [options]操作} END{ [options]操作}' 输入文本
- awk工作逻辑
- awk内置变量
- NR 当前读入的文本共有多少行(从1开始编号)
- NF 表示当前读入的行内容共有多少列(字段数)
- $0 代表awk每次读入的行的所有内容
- $1-$n awk每次读入的行内容按照列分隔符分割后的每列元素(字段)
- RS 输入文本行之间的分隔符(默认是换行符)
- ORS 输出文本行之间的分隔符(默认是换行符)。
- FS awk每次读入的行内容的字段分隔符(默认是空格)
- OFS awk每次输出行内容的字段分隔符(默认值是空格)
- NR 表示记录数,在执行过程中对应于当前的行号
- awk常用命令选项[options]
- 设置字段分隔符
- 默认的字段定界符是空格
- -F "分隔符" 可用于明确指定一个定界符
- 也可在BEGIN语句块中则可以用FS=“定界符”设置输入字段的定界符
- 可在BEGIN语句块中则可以用OFS=“定界符”设置输出字段的定界符
- -v var=value 赋值一个用户定义变量,将外部变量传递给awk
- 设置字段分隔符
- awk常用pattern
- 默认执行{ print },即打印每一个读取到的行
- /正则表达式/
- 关系表达式:awk运算符
- 条件判断语句
- awk常用操作{操作}
- awk结果输出到文件:支持重定向与追加