1、首先awk截取指定域,在日志的处理和监控中,经常会截取指定的字符来进行后续处理。如:从df -h命令中提取/目录所占百分比(监控经常会用到)。
2、awk中的判断输出,awk -F: '{if($3>=1000){print "CommonUser:",$1}}' /etc/passwd如果uid大于等于1000,输出用户名,否者不输出,-F后边跟字符的分隔符,不加-F默认空格分隔。
3、NR 表示文件中的行号,表示当前是第几行。NF 表示文件中的当前行列的个数。FS 表示 awk 的输入分隔符,默认分隔符为空格和制表符,可以对其进行自定义设置 。OFS 表示 awk 的输出分隔符,默认为空格,也可以对其进行自定义设置。
4、在 awk 中使用数学运算,经常会遇到需要统计相同key的value总和。
5、最后在 awk 中使用正则表达式 //中是要匹配的字符awk '/^math/ {print }' 123txt--------匹配以math开头的行。
这道题目挺好,涉及了判断表达式,字符串截取,格式化输出。
convertsh 内容如下:
#!/bin/bash
guide="Usage: `basename $0` c"
if [ $# -eq 0 ]; then # no input parameter
echo "$guide"
exit 1
fi
file="$1"
ext=${file##} # parse file extension
name=${file%} # parse basic file name
# file doesn't exist or is not a regular file, or is not a C source file
if [ ! -f $file -o $ext != "c" ]; then
echo "Please check if $file is a valid file!"
echo "$guide"
exit 1
fi
awk '{printf("%d\t%s\n",++i,$0)}' $file >${name}txt
exit 0
a=0 是设置状态位,当a为1时打印第三个字段的值,同时把状态标志a设置为0
这个是条件语句,相当于c语言中的if(条件),这两个条件同时成立
a==1 并且 ${key}==$1
提取文件中指定模式匹配的字段内容:
awk 'BEGIN{FS=OFS=","}{for(i=1;i<=NF;i++){if($i ~ /daytime=|sectime=|s1=|cid=/)lines=lines","$i;};print lines;lines=""}' $FILE
进阶版,使用awk的match函数:
awk '{match($0,/(daytime=[^,],)/,a);match($0,/(sectime=[^,],)/,b);match($0,/(s1=[^,],)/,c);match($0,/(cid[^}])}/,d);print a[1],b[1],d[1],",",c[1]}' clickid_807c98_2017-09-17_23_convertxt
超强版,直接生成csv格式可以使用Excel打开:
awk '{match($0,/daytime=([^,],)/,a);match($0,/sectime=([^,],)/,b);match($0,/s1=([^,],)/,c);match($0,/cid=([^}])}/,d);print a[1],b[1],d[1],",",c[1]}' clickid_807c98_2017-09-17_23_convertxt
以上就是关于LINUX awk 语句 awk ' { SUM += $1 } END { print SUM }'请问这个要怎么理解,需详细全部的内容,包括:LINUX awk 语句 awk ' { SUM += $1 } END { print SUM }'请问这个要怎么理解,需详细、编写一个shell程序convert.sh 如果输入convert.sh *.c、谁能帮忙解释下这个awk语句什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)