shell脚本 awk工具

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理, 因为切开的部分使用awk可以定义变量,运算符, 使用流程控制语句进行深度加工与分析

选项参数功能
-F指定输入文件拆分分隔符
-v赋值一个用户定义变量

内置变量

内置变量含义
ARGC命令行参数个数
ARGV命令行参数排列
ENVIRON支持队列中系统环境变量的使用
FILENAMEawk浏览的文件名
FNR浏览文件的记录数
FS设置输入域分隔符,等价于命令行 -F选项
NF浏览记录的域的个数, 根据分隔符分割后的列数
NR已读的记录数, 也是行号
OFS输出域分隔符
ORS输出记录分隔符
RS控制记录分隔符
$n$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。
$NF$NF是number finally,表示最后一列的信息,跟变量NF是有区别的,变量NF统计的是每行列的总数

echo "abc 123 456" | awk '{print $1"&"$2"&"$3}'        默认以空格为分割数据

awk '/root/' passwd        搜索passwd文件含有root关键字的所有行

awk -F: '/root/{print $7}' passwd        搜索passwd文件有root的所有行, 以 :拆分并输出第7列

 awk -F ':' '{print "文件名:" FILENAME ",行号:" NR ",列数:" NF ",内容:" $0}' passwd

统计passwd: 文件名,每行的行号,每行的列数,对应的完整行内容

 打印第二行的内容

awk -F ":" 'NR==2{printf("filename:%s,内容:%s\n",FILENAME,$0)}' passwd

查找以c开头的资源

ls -a | awk '/^c/'

打印第一列

awk -F ':' '{print $1}' passwd

打印最后1列

awk -F: '{print $NF}' passwd

打印倒数第二列

awk -F: '{print $(NF-1)}' passwd

打印10到20行的第一列

awk -F: '{if(NR>=10 && NR<=20) print $1}' passwd

多分隔符使用

echo "one:two/three" | awk -F '[:/]' 

添加开始和结束

echo -e  "abc\nabc" | awk 'BEGIN{print "开始..."} {print $0} END{print "结束..."}'

使用循环拼接分割后的字符串

echo "abc def     ghi   21" | awk -v str=""  '{for(n=1;n<=NF;n++){ str=str$n} print str }'

操作指定数字运算

echo "2.1" | awk -v i=1 '{print $0+i}'

切割ip

ifconfig | awk '/broadcast/{print}' | awk -F " " '{print $2}'

显示空行行号

sed 'G' sed.txt | awk '/^$/{print NR}'

grep , sed ,awk , cut 文本字符串操作四剑客的区别

grep:用于查找匹配的行

cut: 截取数据. 截取某个文件中的列, 重点是按照列分割,

这个命令不适合截取文件中有多个空白字符的字段

sed: 增删改查数据. sed用于在文件中以行来截取数据进行增\删\改\查

awk:截取分析数据. 可以在某个文件中是以竖列来截取分析数据, 如果字段之间含有很多空白字符也可以获取需要的数据, awk是一种语言,可以深入分析文件数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值