awk文本分析处理

1,简介

1) 从输入流读取一行(文件,管道或者标准输入),存储到内存中。
echo hzq 123 | awk '{print $0}'
awk '{print $0}' test.csv
grep line test.csv | awk 'print $0'
2)对每一行执行执行相应的命令,处理文本。(默认的域分隔符是空格和tab,可以使用-F指定单一的tab分隔符-F '\t')
域分隔符分开的每一项称为一个域。
3)对每一行,重复执行命令,直到结尾。

2,语法与概念

1)awk [-F field-separator] 'commands' -F 指定域分隔符, 默认为空格或者tab
awk -F ':' '{print $1"\t"$2}' test.csv指定 :作为域分隔符。
2)awk内置的变量
$0 : 整行记录
$1~$n : 表示第1~n个域
NF:域的个数
NR:已读的记录数awk '{print NR "\t" NF}' test.csv
FNR 当前记录数,是各个文件自己的行号
$NF 表示的最后一个Field(域)
FS 输入字段分隔符 默认是空格或Tab
RS 输入的记录分隔符, 默认为换行符

3,例子

1)netstat -anp | grep tcp | awk '{printf "%s %s %-8s %-8s %-8s %-22s %-22s %-15s %-15s\n",NR,FNR,$1,$2,$3,$4,$5,$6,$7}'
2)netstat -anp | grep tcp | awk '$6 == "LISTEN" || $6 == "ESTABLISHED" {print $7}'
3) awk -F ':' '{print $1, $6}' /etc/passwd
awk 'FS=":" {print $1, $6}' /etc/passwd
4)awk '$NF ~ /976/ {print $NF}' test.csv最后一个域匹配字符串976的
netstat -anp | grep tcp | awk '/ESTABLISHED/ && !/mysql/'

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • awk介绍awk变量printf命令:实现格式化输出操作符awk patternawk actionawk数组aw...
    哈喽别样阅读 1,634评论 0 4
  • awk命令的基本使用 [root@shellscript ~]# head -n 3 /etc/passwd | ...
    古寒飞阅读 1,084评论 0 2
  • awk:报告生成器,格式化文本输出 内容: awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 a...
    BossHuang阅读 1,483评论 0 9
  • awk: grep,sed,awk grep:文本过滤 sed:文本编辑 awk:文本格式化工具; 1 什么是aw...
    木林森阅读 1,849评论 0 16
  • 本章主要学习内容awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 awk条件判断 a...
    楠人帮阅读 1,317评论 0 8