awk学习记录

本文详细介绍了awk命令的基本格式和使用方法,包括BEGIN和END语句块、字段操作及参数应用。通过示例展示了awk如何处理文件内容,如统计行数、字段数,以及进行特定字段的筛选和计算。此外,还讲解了awk在统计目录下文件占用空间、自定义分隔符等方面的运用。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:参考学习:https://edu.csdn.net/job/javabe_01/gml-d6688990de744b7fa45a0b473dbeff83


提示:以下是本篇文章正文内容,下面案例可供参考

一、awk基本格式

awk ‘BEGIN{ commands } pattern{ commands } END{ commands }’ file

// 一个awk脚本通常由BEGIN,通用语句块,END语句块组成,三部分都是可选的。
// 脚本通常是被单引号或双引号包住。
eg:
创建一个脚本:for i in {0…9} ;do echo “hello $i”>>file ;done
1、awk ‘BEGIN{ i=0 } { i++ } END{ print i }’ filename
在这里插入图片描述
2、awk ‘BEGIN{i=0} {print}’ file,输出所有行的内容,or (awk ‘{print}’ /etc/passwd,awk ‘{print $0}’ /etc/passwd)
在这里插入图片描述

常用参数:
NR : 表示记录数,在执行过程中对应于当前的行号
NF : 表示字段数,在执行过程中对应于当前的字段数。 print $NF答应一行中最后一个字段
$n : 当前记录的第n个字段,比如n为1表示第一个字段,n为2表示第二个字段。
$0 : 这个变量包含执行过程中当前行的文本内容。
-F :分隔符,默认空格为分隔符。
eg:
1、awk -F":" ‘{print $1;print $2}’ /etc/passwd
以冒号为分隔符,输出第一个字段和第二个字段
2、awk -F: ‘{print $1,$3,$6}’ OFS=“\t” /etc/passwd
输出字段1,3,6,以制表符作为分隔符
在这里插入图片描述
3、统计某目录下的文件占用空间
ls -l |awk -F" " ‘BEGIN {sum=0}{sum=sum+$5}END{print "total size is ",sum}’
分解:
a.可以先打印出size那个字段:
ls -l |awk -F" " ‘{print $5}’
在这里插入图片描述
b.再想办法讲打印出来的数字相加
注意:如果是变量,直接写变量名,不需要加$符号.
在awk中加$符号,表示第几个字段。(容易与shell变量格式用混淆)
在这里插入图片描述
4、打印出行号
awk -F: ‘{print NR,$0 }’ /etc/passwd.(参数之间用逗号隔开,打印出来用空格隔开。若参数之间没有用逗号隔开,打印出来的行号和内容不分隔。也可以自定义隔开的符号,如:awk -F: ‘{print NR “;”$0 }’ /etc/passwd,行号和内容以分号隔开)

在这里插入图片描述
//依次打印行号,字段数,最后字段值,制表符,每行内容
$ awk -F: ‘{print NR,NF,$NF,“\t”,$0}’ /etc/passwd

//显示第5行
$ awk -F: ‘NR==5{print}’ /etc/passwd

//显示第5行和第6行
$ awk -F: ‘NR5 || NR6{print}’ /etc/passwd

//不显示第一行
$ route -n|awk ‘NR!=1{print}’

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值