« MSSQL 和 MySQL 取中间某几行的方法 sql语句 | Main | FTP 搜索引擎 parker »
October 6, 2006
awk 匹配
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。 https://windtear.net/archives/2006/10/06/001106.html http://windtear.net/archives/2006/10/06/001106.html awk 匹配 http://www.gnu.org/software/gawk/ awk经常用在如下的几个方面: 根据要求选择文件的某几行,几列或部分字段以供显示输出 分析文档中的某一个字出现的频率、位置等 根据某一个文档的信息准备格式化输出 以一个功能十分强大的方式过滤输出文档 根据文档中的数值进行计算 匹配 pattern 然后执行 action ! /pattern/ {action} /[0-9]+\.[0-9]*/ BEGIN {FS="[[:space:]+]"} END {} BEGIN { count = 0 } $3 == "windtear.net" { count = count + 1 } END { printf "%d times",count } 内置变量 NR 已经读取过的记录数 FNR 从当前文件中读出的记录数 FILENAME 输入文件的名字 FS 字段分隔符(缺省为空格) RS 记录分隔符(缺省为换行) OFMT 数字的输出格式(缺省为%g) OFS 输出字段分隔符 ORS 输出记录分隔符 NF 当前记录中的字段数 if(){}else if(){}else{} 例子: gawk -F":" '{} {print $1 | "sort"}' /etc/passwd gawk 'END {print NR}' /etc/passwd 相当于 wc -l /etc/passwd gawk '{print NR,$0}' /etc/passwd 相当于 cat -n /etc/passwd awk '$3=="windtear.net" {print $1}' access_log |sort |uniq -c |sort -nr +0 > ip awk '{if($3=="windtear.net") print $1}' access_log |sort |uniq -c |sort -nr +0 > ip |
Posted by windtear at October 6, 2006 11:19 PM