首页 > 代码库 > awk

awk

AWK程序是由一系列模式--动作对组成的,写做

pattern { action }
其中pattern表示AWK在数据中查找的内容,而action是在找到匹配内容时所执行的一系列命令。输入行被分成了一些记录:记录默认由换行符分割,因此输入会按照行进行分割。程序使用给定的条件一个个的测试每条记录,并执行测试通过的条件所对应的actionpatternaction都可以省略不写。无pattern默认匹配全部的记录;而无action则是打印原始记录。简单的AWK表达式之外,pattern可以是BEGINEND;这两种条件对应的action分别是读取所有的记录之前和之后。同时,如pattern1, pattern2的条件表示符合条件pattern1pattern2的记录及其之间的部分

$ cat grepinawk
pattern=$1
shift
awk ‘/‘$pattern‘/ { print FILENAME ":" $0 }‘ $*
$

awk -F\" ‘/^DocumentRoot/{print $2}‘ $(httpd -V | awk -F\" ‘/\.conf/{print $2}‘)寻找DocumentRoot (Apache)

history | awk ‘{a[$2]++}END{for(i in a){print a " " i}}‘ | sort -rn | head > /tmp/cmds | gnuplot -persist <(echo ‘plot "/tmp/cmds" using最常用的命令

awk ‘(length>t) {t=length} END {print t}‘ *.cpp打印出代码中长度最长的那一行

$ awk ‘(length>t) {t=length} END {print t}‘ *.java

3123

awk -F: ‘BEGIN{a[NULL]=0;dupli[NULL]=0;}{if($3 in a){print a[$3];print ;}else a[$3]=$0;} ‘ /etc/passwd | sort -t: -k3 -n | sed -e ‘s/^/‘$(ho 在/etc/passwd里显示所有重复的UIC行