Linux命令之awk命令

        AWK是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。

具体语法如下

awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)

1、数据准备:czbk-txt.txt文本内容如下:

zhangsan 68 99 26
lisi 98 66 96
wangwu 38 33 86
zhaoliu 78 44 36
maq 88 22 66
zhouba 98 44 46

2、搜索含有 zhang 和 li 的学生成绩:

cat czbk-txt.txt | awk '/zhang|li/'

执行效果如下

指定分割符, 根据下标显示内容  

命令含义
awk -F ',' '{print $1, $2, $3}' 文件操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容

选项

选项英文含义
-F ','field-separator使用 指定字符 分割
$ + 数字获取第几段内容
$0获取 当前行 内容
NFfield表示当前行共有多少个字段
$NF代表 最后一个字段
$(NF-1)代表 倒数第二个字段
NR代表 处理的是第几行
# 查看文档内容
cat czbk-txt.txt 
#直接输出
cat score.txt | awk -F ' ' '{print $1,$2,$3}'

执行效果如下

指定分割符, 根据下标显示内容  

命令含义
awk -F ' ' '{OFS="==="}{print $1, $2, $3}' 1.txt操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容

选项

选项英文含义
OFS="字符"output field separator向外输出时的段分割字符串
转义序列含义
\b退格
\f换页
\n换行
\r回车
\t制表符

# 按照 === 进行分割, 打印 第一段 第二段 第三段
cat  czbk-txt.txt | awk -F ' ' '{OFS="==="}{print $1,$2,$3}'
# 按照 制表符tab 进行分割, 打印 第一段 第二段 第三段
cat czbk-txt.txt| awk -F ' ' '{OFS="\t"}{print $1,$2,$3}'

执行效果如下

调用 awk 提供的函数  

命令含义
awk -F ',' '{print toupper($2)}' 1.txt操作1.txt文件, 根据 逗号 分割, 打印 第一段 第二段 第三段 内容

常用函数如下:  

函数名含义作用
toupper()upper字符 转成 大写
tolower()lower字符 转成小写
length()length返回 字符长度

# 打印第一段内容
 cat czbk-txt.txt | awk -F ' ' '{print $1}'
# 将第一段内容转成大写 且 显示 
 cat czbk-txt.txt | awk -F ' ' '{print toupper($1)}'

执行效果如下

求指定学科平均分

命令含义
awk 'BEGIN{初始化操作}{每行都执行} END{结束时操作}' 文件名BEGIN{ 这里面放的是执行前的语句 } {这里面放的是处理每一行时要执行的语句} END {这里面放的是处理完所有的行后要执行的语句 }

查看czbk-txt.txt 文件内容

cat czbk-txt.txt 

执行效果如下

查看总分

注意:这里计算的是第4列的总分

cat czbk-txt.txt| awk -F ' ' 'BEGIN{}{total=total+$4} END{print total}' 

执行效果如下

查看总分, 总人数

注意:这里计算的是第4列的

cat czbk-txt.txt| awk -F ' ' 'BEGIN{}{total=total+$4} END{print total, NR}' 

执行效果如下

查看总分, 总人数, 平均分

注意:这里计算的是第4列的

 cat czbk-txt.txt | awk -F ' ' 'BEGIN{}{total=total+$4} END{print total, NR, (total/NR)}' 

执行效果如下

总结

  • awk在使用过程中主要用作分析
  • 简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠然予夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值