Linux内核系列:awk、sed命令

awk

  1. 命令行格式
    1
    awk [-F  field-separator]  'commands'  input-file(s)
  • 默认以空格或tab分割域,-F后可以跟一个自定义域分隔符。
  • commands表示awk命令,如print。
  • input-file表示输入的文件。
  1. shell脚本方式

可以将所有awk命令插入一个文件,设置执行权限,然后将awk作为命令解释器(#!/bin/awk)执行。

  1. 将所有的awk命令插入一个单独文件,然后调用:
    1
    awk -f awk-script-file input-file(s)
    其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。

详细可以参考这篇文章官方文档

sed

  1. 运行原理
  • 当用sed命令对文本进行处理的时候,sed先读取对象的文本文件的第一行到模式空间中。
  • 当有内容进入“模式空间”时,sed的编辑命令对模式空间中的内容进行编辑操作(修改,替换,删除,追加,显示等等)
  • 模式空间中的内容编辑处理完成之后,sed把此内容通过标准输出(默认为显示器)打印出来,并删除模式空间中的内容。
  • 第一行处理结束。从新读取第二行的内容进行处理,直到最后一行。
  1. 使用

参考这篇文章应该就够了

两者区别和联系

  • sed的核心是正则,主要处理“行问题”。

  • awk的核心是格式化,主要处理“列问题”。