firemail
标题:
awk 命令
[打印本页]
作者:
java
时间:
2018-4-24 16:42
标题:
awk 命令
语法
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
-v var=value or --asign var=value
赋值一个用户定义变量。
用法一:
awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号
# 每行按空格或TAB分割,输出文本中的1、4项
$ awk '{print $1,$4}' log.txt
用法二:
awk -F #-F相当于内置变量FS, 指定分割字符
# 使用","分割
$ awk -F, '{print $1,$2}' log.txt
用法三:
awk -v # 设置变量
$ awk -va=1 '{print $1,$1+a}' log.txt
http://www.runoob.com/linux/linux-comm-awk.html
作者:
java
时间:
2018-4-25 11:53
数组用法
Awk中数组称为关联数组,因为它的下标(索引)可以是数字也可以是字符串。
下标通常称为键,数组元素的键和值存储在Awk程序内部的一个表中,该表采用散列算法,因此数组元素是随机排序。
数组格式:array[index]=value
https://www.cnblogs.com/276815076/p/6410179.html
统计日志中访问最多的10个IP
思路:对第一列进行去重,并输出出现的次数
方法1:$ awk '{a[$1]++}END{for(i in a)print a
,i|"sort -k1 -nr|head -n10"}' access.log
方法2:$ awk '{print $1}' access.log |sort |uniq -c |sort -k1 -nr |head -n10
说明:a[$1]++ 创建数组a,以第一列作为下标,使用运算符++作为数组元素,元素初始值为0。处理一个IP时,下标是IP,元素加1,处理第二个IP时,下标是IP,元素加1,如果这个IP已经存在,则元素再加1,也就是这个IP出现了两次,元素结果是2,以此类推。因此可以实现去重,统计出现次数。
作者:
java
时间:
2018-6-15 13:22
字符串匹配
判断字符串中是否含有 单引号
BEGIN {
isNum = 1
}
#运行中
{
strA=$1
print $strA
if(match(strA,/[\']/) != 0) {
print "OK"
}
}
#运行后
END {
}
复制代码
欢迎光临 firemail (http://firemail.wang:8088/)
Powered by Discuz! X3