awk

  • awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

awk 命令格式和选项

语法格式:

  • awk [options] 'script' var=value files
  • awk [options] -f scriptfile var=value files

常用命令选项

  • -F fs, fs 指定输入分隔符,fs可以时字符串或正则表达式
  • -v var=value 赋值一个用户定义变量,将外部变量传递给awk
  • -f scriptfile 从脚本文件中读取awk命令

实例

  • 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
03-20 10:08