语法:
awk ‘{command}‘ filename 多个命令以分号分隔。
awk ‘BEGIN {command1} {command2} END{command3}‘ 注意:BEGIN ,END 需要大写
常用变量说明:
FS : 指定分隔符,默认是空格和tab 。 也可以简写 -F ";"
NR: 目前处理的是【第几行】数据 ,文件中的行标
NF: 每一行的列数(段、栏位)
例子1:
# 以tab作为分隔符 # print $0 表示打印所有列, $1 表示打印第一列 ,不写默认打印所有列 # 打印所有列,用 -F 指定分隔符 ,$0 awk -F "\t" ‘{print $0}‘ zss_test.txt # 打印所有列,用 -F 指定分隔符 awk -F "\t" ‘{print }‘ zss_test.txt # 打印所有列,用 FS 指定分隔符 awk ‘FS=="\t"; {print $0}‘ zss_test.txt
打印结果1:
例子2:
##查看文件内容 cat -n zss_test.txt ##NR,NF使用 awk ‘FS=="\t"; {print $1 "\t rows:"NR "\t columns:"NF}‘ zss_test.txt
打印结果2:
例子3:
##删除指定目录下的所有文件 慎用 ls -l|awk ‘{print "rm -fr " $9}‘|sh
例子4:
# 利用printf 格式化输出 %s 字符,%d 整数,%f 浮点 ; # %10s 右对齐,长度10,实际长度大于设置长度,按实际长度 # %-10s 左对齐,其他同上 #打印文件内容 cat -n kimbo_test.txt #打印第二行之后的,列1,列4 awk -F"|" ‘NR>=2{print $1,$4}‘ kimbo_test.txt #打印第二行之后的,列1,列4 ,利用printf格式话输出 ,列1左对齐 awk -F"|" ‘NR>=2{printf "%-30s\t%5.2f\n",$1,$4;}‘ kimbo_test.txt #打印第二行之后的,列1,列4 ,利用printf格式话输出 ,列1右对齐 awk -F"|" ‘NR>=2{printf "%30s\t%5.2f\n",$1,$4;}‘ kimbo_test.txt ##多个命令,可以分号分隔 ## 打印第二行之后的,列1,列4 ,利用printf格式话输出 ,列1左对齐 awk -F"|" ‘NR>=2{printf "%-30s\t",$1}; NR>=2{printf "%5d\n", $4}‘ kimbo_test.txt
打印结果4:
例子5:
##begin end 用法 #打印第二行之后的,列1,列4 awk -F"|" ‘BEGIN {print "start-->"} NR>=2{print $1,$4} END{print "end"}‘ kimbo_test.txt
打印结果5:
时间: 2024-10-14 07:50:06