前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux篇】--awk的使用

【Linux篇】--awk的使用

作者头像
LhWorld哥陪你聊算法
发布2018-09-13 15:04:42
1.7K0
发布2018-09-13 15:04:42
举报
文章被收录于专栏:LhWorld哥陪你聊算法

一、前述

awk是一个强大的文本分析工具。相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。 简单来说awk就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。

二、具体

1、基础知识点

awk -F '{pattern + action}' {filenames} 支持自定义分隔符 支持正则表达式匹配 支持自定义变量,数组  a[1]  a[tom]  map(key) 支持内置变量 ARGC               命令行参数个数 ARGV               命令行参数排列 ENVIRON            支持队列中系统环境变量的使用 FILENAME           awk浏览的文件名 FNR                浏览文件的记录数 FS                 设置输入域分隔符,等价于命令行 -F选项 NF                 浏览记录的域的个数 NR                 已读的记录数 OFS                输出域分隔符 ORS                输出记录分隔符 RS                 控制记录分隔符 支持函数 print、split、substr、sub、gsub 支持流程控制语句,类C语言 if、while、do/while、for、break、continue

$0表示所有域, $1表示第一个域, $n表示第n个域。 默认域分隔符是空格键或tab键。 2、举例

只是显示/etc/passwd的账户:CUT awk -F':' '{print $1}' passwd 只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行开始前添加列名name,shell,在最后一行添加"blue,/bin/nosh"(cut,sed) awk -F':' 'BEGIN{print "name,shell"} {print $1 "," $7} END{print "blue,/bin/nosh"}' passwd 搜索/etc/passwd有root关键字的所有行 awk  '/root/ { print $0}'   passwd 统计/etc/passwd文件中,每行的行号,每行的列数,对应的完整行内容

代码语言:javascript
复制
xxx     Math English C++  Experiment
Monkey  100   90     95   Good
Cat     80    100    60   Perfect
Dog     90    60     70   Great
Tiger   95    85     90   Fantastic
代码语言:javascript
复制
    Administrator@51B6904C3C8A485 ~/learn_awk  
    $ awk '{print $2}' test.txt  
    Math  
    100  
    80  
    90  
    95  
      
    Administrator@51B6904C3C8A485 ~/learn_awk  
    $  

 看这篇博客吧 ,讲得很好https://blog.csdn.net/stpeace/article/details/46848873

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档