wanghong1994.github.io

Follow me on GitHub

sed and awk

sed(行读取)

sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换,删除,新增,选取等特定工作. 基本语法: sed 选项 动作 filename

  • 选项 -n
  • 动作 -a 新增往上增加
    • i 往上一行添加
    • c 替换 1,5c会将这一块区域整个替换 不会每行都替换
    • d 删除
    • p 输出
    • s 替换经常配合正则进行操作
    • w 写入 sed ‘w 要被写入的文件(目标文件)’ 读取内容的文件 只要用w向文件中进行写入就会将目标文件之前的内容全部干掉
    • r 读取 sed ‘2r 要读取的文件’ 加入数据的文件(目标文件)
  • 高级操作
    • 使用管道符配合其他命令
    • {} 可以让sed直行多个动作 只是动作间要用分号隔开
    • & 替换 & 相当于占位符的作用 就是我们s/查询条件/ 查询到的内容 可以在s/查询条件/要替换成的内容中进行查找 实现追加的效果
    • \u转成大写 可以配合我们的&来实现将匹配内容转成大写的操作
    • ()分组功能
  • 怎么在sed中获取分组的内容呢? 首先分组的序号是从1开始的并且是按照从左到右的顺序排列 要获取使用\分组的序号来进行获取,列如\1就是个占位符

awk(行读取)

awk的基本格式: awk options选项 ‘command’ file

  • NR,行号
  • NF,列数
  • $1 $n
  • -F设置分割符 默认情况下是使用空格来进行切割 print printf 要使用正则:~/正则匹配规则/ 如果用!~就是对正则匹配内容取非
  • awk的扩展格式
    • awk options选项 ‘BEGIN{} command END{}’ file