awk [-F|-f|-v] 'BEGIN{} //{command1; command2} END{}' file
[-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value
’ ’ 引用代码块
BEGIN 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符,没有可以不写
// 匹配代码块,可以是字符串或正则表达式
{} 命令代码块,包含一条或多条命令
以上两个应该成对出写。可以表示多个匹配和分别的处理过程。
; 多条命令使用分号分隔
END 结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息。没有可以不写。
也可以像下面这样,直接
awk -f script.awk file
一些例子
awk '{print " "}' /etc/passwd ##不输出/etc/passwd,而是输出相同行数的空行
下面的命令常用于kill调指定进程
#!/bin/bash
content=$1
ps -ef | grep ${content} | grep -v grep | awk '{print $2}' | xargs kill -9
下面是一个指定分隔符的例子
awk -F":" '{ print "username: " $1 "\t\tuid:" $3" }' /etc/passwd
多个条件匹配和处理的例子
awk -F ':' '/oo/ {print $1,$4} /user1/ {print $1,$6}' test.txt