awk文本处理
2019-05-10 05:58:21来源:博客园 阅读 ()
awk文本处理
基于模式匹配检查输入文本,逐行处理并输出
通常用在shell脚本中,获取指定的数据
单独用时,可对文本数据做统计
一、语法格式
格式1:命令 | awk [选项] '[条件]{编辑指令}'
格式2:awk [选项] '[条件]{编辑指令}' 文件..
若有多条语句,可用分号分隔
print是最常用的指令
# awk -F ";" '{print $1,$2}' /etc/passwd
root x
bin x
.. ..
二、常用命令选项
-F:指定分隔符,可省略(默认空格或Tab位)
cat m.txt
11111111 Caremi
222 IT Group
#awk'{print $1}' m.txt
11111111
222
#awk -F "r" '{print $1}' m.txt
11111111 Ta
222 IT G
#df -hT /boot | tail -1 //第一行
#df -hT /boot | tail -1 | awk '{print $6}' //第一行第六列
# head -5 /etc/passwd | awk -F:(分隔符可以紧挨-F) '{print $1,$7}'
三、awk内置变量
FS 保存或设置字段分隔符,例如FS=":"
$n 指定分隔的第n个字段,如$1、$3分别表示第1、3列
$0 当前读入的整行文本内容
NF 记录当前处理行的字段个数(列数)
NR 记录当前已读入行的数量(行数)
FNR 保存当前处理行在原文本内的序号(行号)
#awk '{print "第"FNR"行","有"NF"列"}' m.txt
#awk '{print "Last:"$NF}' m.txt //$NF表示每行最后一个字段
#awk -F: '$1==ENVIRON["USER"]{print $3}' \
/etc/passwd //输出当前用户的UID信息
四、awk处理的时机
1.行前处理,BEGIN{}
读入第一行文本之前的执行
一般用来初始化操作
2.逐行处理,{}
逐行读入文本执行相应的处理
是最常见的编辑指令块
3.行后处理,END{}
处理完最后一行文本之后执行
一般用来输出处理结果
1-3可单独使用,也可以一起使用
#awk 'BEGIN {a=34;print a+12}' //预处理不需要数据文件
#awk 'BEGIN{x=0}/\<bash$/{x++}\
END{print x}' /etc/passwd //统计使用bash的用户个数
#awk 'BEGIN{print NR}END{print NR}' m.txt //预处理时,行数为0
//全部处理完以后,行数为已读入的行数
五、awk处理条件
1.条件的表现形式
(1)正则表达式
/正则表达式/
~ 匹配
!~ 不匹配
#awk -F:'/^ro/{print}' /etc/passwd //列出以ro开头的记录
#awk -F: '$7!~/bash$/{print $1,$7}' /etc/passwd
//列出第7个字段不以bash结尾的用户名、登录shell
(2)数值/字符串比较
==;!=;>;>=;<;<=
cat reg.txt
abcd XX
XX
abcabcd XX
#awk 'NR==2{print}' reg.txt //XX
#awk '$2!="XX"{print}' reg.txt //XX,输出第2列不是XX的行
#awk 'NF>=2{print}' reg.txt //输出含2个及以上字段的行
abcd XX
abcabcd XX
(3)逻辑比较
&&:期望多个条件都成立;||:只要有一个条件成立即满足要求
#awk -F:'$3>=0&&3<2{print $1,$3}' \
/etc/passwd //列出UID小于2的用户信息
root 0
bin 1
#awk -F: '$3==1||$3==7{print $1,$3}' \
/etc/passwd //列出UID为1或7的用户信息
bin 1
halt 7
(4)运算符
+,-,*,/,%,++,--,+=,-=,*=,/=
#awk 'NR%2==1{print}' reg.txt //输出奇数行文本
abcd XX
abcabcd XX
#awk 'BEGIN{i=0}{i+=NF} END{print i}' reg.txt //统计文本的总字段个数
5
#seq 200 | awk 'BEGIN{i=0}{$0%3==0}&&\
{$0%13==0}{i++} END{print i}' //计算能同时被3和13整除的整数个数
原文链接:https://www.cnblogs.com/alphain/p/10836169.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Linux--磁盘检查简单介绍
下一篇:Linux ssh远程登陆
- awk命令详解 2020-06-10
- 一次云服务器安装达梦数据库后无法远程访问问题处理 2020-05-24
- Linux 下三种提高工作效率的文件处理技巧 2020-05-23
- 万字长文!一次性弄懂 Nginx 处理 HTTP 请求的 11 个阶段 2020-05-21
- 关于Nginx处理HTTP请求的11个阶段流程 2020-05-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash