- 当用awk正则匹配单引号时,需要将
'替换成'\' - 赋值语句会返回当前值,例:
awk 'BEGIN{print (b=3)+1}'
输出4 - 变量无需初始化,若参与数值运算则自动初始化为0,直接打印输出的是空字符串
- 利用以上两点可输出文件的奇偶行
输出奇数行:awk 'i=!i'
输出偶数行:awk '!(i=!i)' - gsub(r,s,t)直接修改t字符串的内容,返回的是替换的次数
- split(s,A,r)的r中若包含
\、*,需要对他们进行转义 - awk无法处理文件中的空字符
\x00,遇到时会提前结束,需要事先去除这些字符。可以使用tr命令,tr -d '\0' < infile,注意-d参数后写的是字符的八进制格式,如果写成\x00会对其它字符造成影响。
示例用法:
- 分组求和:
awk '{s[$1] += $2}END{ for(i in s){ print i, s[i] } }' file1 > file2 - 将文件infile根据某一列的值拆成outfile1和outfile2:
awk -F, '{if ($2==1) {print $0 >> "outfile1"} else {print $0 >> "outfile2"}}' infile - 将文件按照某列输出,按列值命名:
awk -F, '{gsub(/[\/ ]/,"",$1);print $0 > "subdir/"$1}' infile - 遍历各列字段:
awk '{for(i=1;i<=NF;i++){print $i}}' - 分组求平均:
awk -F ',' '{r[$3] += $5; l[$3]++} END {for(i in l){print(i,r[i]/l[i]}}' all_result_acr.csv
1145

被折叠的 条评论
为什么被折叠?



