Linux---awk
创始人
2024-03-07 04:25:25

Linux三剑客之一awk

简单介绍一下awk的用法

再谈三剑客

grep awk sed 三个并称Linux的三剑客
awk:适合编辑,处理匹配到的文本内容
grep:擅长单纯的查找或匹配文本内容
链接: Linux—grep
sed:适合格式化文本内容,对文本进行复杂处理
链接: Linux—sed


文章目录

  • Linux三剑客之一awk
      • 再谈三剑客
  • awk
  • 语法
  • 用法
    • 内置变量
    • 自定义输出
    • awk参数
    • print打印格式
    • 模式pattern
      • BEGIN模式
      • END模式
      • 关系运算符模式
    • 自定义内置变量
    • 正则表达式
      • 语法


awk

awk有强大的文本格式化的能力,好比将一些文本数据格式化成专业的excel表的样式。
awk早期在unix上实现,用的是gawk,是GUN awk的意思。
awk更是一门编程语言,支持条件判断,数组,循环等功能。


语法

awk  [option] 'pattern[action]' file

options awk可选参数
pattern 模式
action 动作(awk擅长文本格式化,且输出格式化后的结果,因此最常用的动作就是print和printf)
file 处理文件

用法

这里用到的 文件为 123.txt
在这里插入图片描述

对awk而言,变量分为
内置变量
自定义变量

内置变量

变量含义
$n指定分隔符后,当前记录的第n个字段
$0完整的输入记录
FS字段分隔符,默认是空格
NF当前记录数,行数
NRman wak

更多内置变量可以man手册查看--------man awk
在这里插入图片描述

awk '{print $2}' 123.txt//取出第二列
$0 代表一整行  =awk '{print}' 123.txt
$1 代表第一列
······
这里执行的命令没有使用参数和模式,$2表示输出文本的第二列信息
awk默认以空格为分隔符,且多个空格也识别为一个空格,作为分隔符
awk是按行处理文件,一行处理完毕,处理下一行,根据用户指定的分隔符去工作,没有指定则默认空格

在这里插入图片描述

awk '{print $1,$3}' 123.txt//,代表空格 显示第一行,第三行

在这里插入图片描述

自定义输出

awk '{print "list1: "$1,"list2: "$3}' 123.txt //按要求输出第一行,第三行
awk 必须 外层单引号,内层双引号
内置变量$1,$2都不能添加双引号,否则会识别为文本

在这里插入图片描述

awk 'NR==5{print $0}' 123.txt//显示文件第五行
awk 'NR==5,NR==6{print $0}' 123.txt//显示文件第五行,第六行

在这里插入图片描述

awk '{print NR,$0}' 123.txt//显示每一行的行号和cat -n的操作一样

在这里插入图片描述

awk 'NR==37,NR==40{print NR,$0}' pwd.txt//37-40行的行号和信息显示出来

在这里插入图片描述

awk '{print $1, NF-1}' 123.txt//打印到数第二列

在这里插入图片描述

awk参数

参数含义
-F指定分隔字段符
-v定义或修改一个awk内部变量
-f从脚本文件中读取awk命令

awk默认以空格为分隔符,这里可以指定分隔符

awk -F ":" '{print $1}' pwd.txt //指定 :为分隔符打印第一列

在这里插入图片描述

除了使用-F选项,还可以使用变量的形式,指定分隔符,使用-v搭配选项,修改FS变量
awk -v FS=“:” ‘{print 1,1,1,NF}’ pwd.txt

在这里插入图片描述

awk -F ":" -v OFS="===" '{print $1,$NF}' pwd.txt  //以:分隔,输出时添加===

在这里插入图片描述

print打印格式

print打印会自动换行

在这里插入图片描述

printf打印不会自动换行

在这里插入图片描述

若想要效果一样则需要格式化字符串
awk ‘{printf “%s\n”,$2}’ abc.txt

在这里插入图片描述

模式pattern

awk默认是按行处理文本,如果不指定任何模式(条件),awk默认一行行处理
如果指定了模式,只有符合模式才会被处理

BEGIN模式

处理文本之前做的动作

awk 'BEGIN{print "文件夹里有"}{print $2}' abc.txt  

在这里插入图片描述

END模式

处理完所有行之后执行的操作

awk 'BEGIN{print "处理文本之前"}{print $2}END{print "处理文本之后执行该语句"}' abc.t

在这里插入图片描述

关系运算符模式

在这里插入图片描述

awk 'NR==2{print $0}' abc.txt //输出第二行
awk 'NR!=2{print $0}' abc.txt/输出第二行以外的行

在这里插入图片描述

自定义内置变量

awk -F":" 'BEGIN{printf "%-30s%-30s%-30s\t%-30s\t\n","用户名","用户ID","用户家目录","用户解释器"}{printf "%-30s\t%-30s\t%-30s\t%-30s\t\n",$1,$3,$6,$7}' pwd.txt

在这里插入图片描述

正则表达式

正则表达式主要与awk的pattern模式结合使用

语法

awk '/正则表达式/动作' file

与 grep ‘正则表达式’ pwd.txt效果一致
但是awk配合pattern模式使用更为好用

awk '/^games/{print $0}' pwd.txt//找出pwd.txt文件中的games行

在这里插入图片描述

awk -F ":" '/^games/{print $1,$NF}' pwd.txt  //以:为分隔符找出pwd.txt文件中gams的第一列和最后一列

在这里插入图片描述

相关内容

热门资讯

猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...