GREP:文本过滤工具

  • 常用选项:
    • —color=auto:对匹配到的内容进行着色显示
    • -v:显示不能够被匹配到的行
    • -i:忽略大小写
    • -o:仅显示匹配到的字符
    • -q:静默模式,不输出任何信息
    • -A n:表示after,匹配模式内容的后n行
    • -B n:表示before,匹配模式内容的前n行
    • -C n:表示center,匹配模式内同的前后各n行
    • -E:使用ERE(扩展的正则表达式),等同于egrep
  • 练习题

image.png

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]
    • 支持多维数组