awk 命令的使用
awk/sed是贝尔实验室1977年搞出来的linux神器,但也是linux使用者必须知道的技巧之一。
可以完成的任务:
(1)提取某种输出的第1列和第4列
awk
'{print $1, $4}'
netstat
.txt
(2)支持格式化输出
awk
'{printf "%-8s %-8s %-8s %-18s %-22s %-15s\n",$1,$2,$3,$4,$5,$6}'
netstat
.txt
(3)按条件过滤纪录
awk
'$3==0 && $6=="LISTEN" '
netstat
.txt
awk
' $3>0 {print $0}'
netstat
.txt
(4)内建变量
$0 | 当前记录(这个变量中存放着整个行的内容) |
$1~$n | 当前记录的第n个字段,字段间由FS分隔 |
FS | 输入字段分隔符 默认是空格或Tab |
NF | 当前记录中的字段个数,就是有多少列 |
NR | 已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。 |
FNR | 当前记录数,与NR不同的是,这个值会是各个文件自己的行号 |
RS | 输入的记录分隔符, 默认为换行符 |
OFS | 输出字段分隔符, 默认也是空格 |
ORS | 输出的记录分隔符,默认为换行符 |
FILENAME | 当前输入文件的名字 |
在bash环境下一条龙服务:
起步上台-
脱掉外套:过滤纪录,内建变量,指定分隔符
脱掉衬衫:字符串匹配,拆分合并文件,统计
脱掉内衣:独立awk脚本,环境变量
几个花活:用pipeline组合高级功能,如:打印99乘数表
参考:
[1] bash 参数:
Bash Shell中命令行选项/参数处理 - Frank Tan - 博客园
[2] awk的使用