sed & awk 101 hacks 学习笔记 -awk

Awk 是一个维护和处理文本数据文件的强大语言。
在文本数据有一定的格式,即每行数据包 含多个以分界符分隔的字段时,显得尤其有用。

Awk 基础语法:
Awk –Fs ‘{command}’ input-file
-F 为字段分界符。如果不指定,默认会使用空格作为分界符

典型的 awk 程序包含下面三个区域:

  1. BEGIN 区域
    Begin 区域的语法: BEGIN { awk-commands } BEGIN 区域的命令只最开始、在 awk 执行 body 区域命令之前执行一次。  BEGIN 区域很适合用来打印报文头部信息,以及用来初始化变量。  BEGIN 区域可以有一个或多个 awk 命令  关键字 BEGIN 必须要用大写  BEGIN 区域是可选的
  2. body 区域
    body 区域的语法: /pattern/ {action} body 区域的命令每次从输入文件读取一行就会执行一次  如果输入文件有 10 行,那 body 区域的命令就会执行 10 次(每行执行一次)  Body 区域没有用任何关键字表示,只有用正则模式和命令。
  3. END block
    END 区域的语法: END { awk-commands } END 区域在 awk 执行完所有操作后执行,并且只执行一次。  END 区域很适合打印报文结尾信息,以及做一些清理动作  END 区域可以有一个或多个 awk 命令  关键字 END 必须要用大写  END 区域是可选的

当遇到一个包含多个字段分隔符的文件时,不必担心,FS 可以搞定。你可以使用正则表达 式来指定多个字段分隔符,如 FS = “[,:%]” 指定字段分隔符可以是逗号 ,或者分号 : 或者百 分号 %。
awk ‘BEGIN {FS="[,:%]"}{print $2,$3}’ employee-multiple-fs.txt

OFS – 输出字段分隔符

awk -F ‘,’ ‘BEGIN {OFS=":"} {print $2,$3}’ employee.txt

同时请注意在print语句中使

猜你喜欢

转载自blog.csdn.net/oTobias/article/details/102542273