awk
awk命令用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。
语法格式
常用命令选项
awk脚本
awk脚本是由模式和操作组成的。
模式
模式可以是以下任意一种:
正则表达式:使用通配符的扩展集
关系表达式:使用运算符进行操作,可以是字符串或数字的比较测试
模式匹配表达式:用运算符~(匹配)和~!不匹配
BEGIN 语句块, pattern语句块, END语句块
操作由一个或多个命令、函数、表达式组成,之间由换行符或分号隔开,并位于大刮号内,主要部分是:变量或数组赋值、输出命令、内置函数、控制流语句。
awk脚本基本格式
一个awk脚本通常由BEGIN, 通用语句块,END语句块组成,三部分都是可选的。 脚本通常是被单引号或双引号包住
实例:
head -n2 test.txt|awk -F ‘:’ ‘{print $1}’
head -n2 test.txt|awk -F ‘:’ ‘{print $0}’
awk -F ‘:’ ‘{print $1"#"$2"#"$3"#"$4}’
awk ‘/oo/’ test.txt
awk -F ‘:’ ‘$1 ~/oo/’ test.txt
awk -F ‘:’ ‘/root/ {print $1,$3} /test/ {print $1,$3}’ test.txt
awk -F ‘:’ ‘$3==“0”’ /etc/passwd
awk -F ‘:’ ‘$3>=“500”’ /etc/passwd
awk -F ‘:’ ‘$3>=500’ /etc/passwd
awk -F ‘:’ ‘$7!="/sbin/nologin"’ /etc/passwd
awk -F ‘:’ ‘$3<$4’ /etc/passwd
awk -F ‘:’ ‘$3>“5” && $3<“7”’ /etc/passwd
awk -F ‘:’ ‘$3>1000 || $7=="/bin/bash"’ /etc/passwd
head -5 /etc/passwd |awk -F ‘:’ '{OFS="#"} {print $1,$3,$4}‘
awk -F ‘:’ ‘{OFS="#"} {if ($3>1000) {print $1,$2,$3,$4}}’ /etc/passwd
head -n3 /etc/passwd | awk -F ‘:’ '{print NF}‘
head -n3 /etc/passwd | awk -F ‘:’ '{print NR}‘
awk ‘NR>40’ /etc/passwd
awk -F ‘:’ ‘NR<20 && $1 ~ /roo/’ /etc/passwd
head -n 3 /etc/passwd |awk -F ‘:’ '$1=“root”‘
awk -F ‘:’ ‘{(tot=tot+$3)}; END {print tot}’ /etc/passwd
awk -F ‘:’ ‘{if ($1==“root”) {print $0}}’ /etc/passwd