awk怎么用

  • AWK是一种处理文本文件的语言,是一个强大的文本分析工具。

  • 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。

语法如下

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

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

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

参数:

选项含义
-F ','使用 指定字符 分割
$ + 数字获取第几段内容
$0获取 当前行 内容
NF表示当前行共有多少个字段
$NF代表 最后一个字段
$(NF-1)代表 倒数第二个字段
NR代表 处理的是第几行

准备一个a.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

演示:

# 自定义符号切割b.txt 显示前两行
cat b.txt | awk  -F '|||' '{print $1,$2}'

# 转大写
cat a.txt | awk -F ' ' '{print toupper($1)}'

# 转小写
cat a.txt | awk -F ' ' '{print tolower($1)}'

# 返回长度
cat a.txt | awk -F ' ' '{print length($1)}'

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

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

参数:

选项英文含义
OFS="字符"output field separator向外输出时的段分割字符串
转义序列含义
\b退格
\f换页
\n换行
\r回车
\t制表符
# 按照 === 进行分割, 打印 第一段 第二段 第三段
cat  a.txt | awk -F ' ' '{OFS="==="}{print $1,$2,$3}'
# 按照 制表符tab 进行分割, 打印 第一段 第二段 第三段
cat a.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 a.txt | awk -F ' ' '{print $1}'
# 将第一段内容转成大写 且 显示 
 cat a.txt | awk -F ' ' '{print toupper($1)}'

awk计算:

命令含义
awk ‘BEGIN{初始化操作}{每行都执行} END{结束时操作}’ 文件名BEGIN{ 这里面放的是执行前的语句 }
{这里面放的是处理每一行时要执行的语句}
END {这里面放的是处理完所有的行后要执行的语句 }
# 打印第四列的总和SUM
# 第一个大括号是开始执行的,第二个是要执行的语句
cat b.txt | awk -F ' ' 'BEGIN{sum=0}{sum+=$4}END{print sum}'
# 平均分NR
cat b.txt | awk -F ' ' 'BEGIN{sum=0}{sum+=$4}END{print sum/NR}'
# 最大值MAX  
#最小值MIN 

cat a.txt |awk -F '' 'BEGIN{sum=0}{sum+=$4}END{print sum}'

# 查看第四列的总分
cat a.txt| awk -F ' ' 'BEGIN{}{total=total+$4} END{print total}'
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

itzhuzhu.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值