通过几个案例讲解linux下的awk命令
发布时间 - 2020-09-17 00:00:00 点击率:次shell编程三剑客里,awk比另外两个命令grep、sed更加复杂,更加难以掌握,因为awk是可以作为一个编程语言的!难归难,但该命令是必须要掌握的命令,因为它的功能实在太强大了!
awk基本结构如下:
awk [选项] 'pattern1 {action1} patten2 {action2} ……' filename单引号是为了和shell命令区分开来。
大括号表示一个命令分组。可以是一个动作,或多个动作,如果是多个动作,则动作之间需要加上;或输入enter键
pattern是模式,表示匹配到的行才进行action。模式可以是正则,或算术表达式等
pattern和action可以只有其一,但不能两者都没有
awk常用的选项如下:
-F:指定分割符,分割符可以是字符也可以是一个正则表达式
-v val=value,定义一个变量并赋值
下面,我来通过一个应用来讲解awk命令的使用。下面是一个文本文件的部分内容
# head city.txt 北京 BEIJING BJ 上海 SHANGHAI SH 天津 TIANJIN TJ 重庆 CHONGQING ZQ 阿克苏 AKESU AKS ……
现在的需求是,获取每个城市的全拼,然后转换为小写形式再连接上hellowx.com。其他的信息全部给过滤掉。
# awk 'NR%2==0{next}{print}' city.txt | head -n 10
北京 BEIJING BJ
上海 SHANGHAI SH
天津 TIANJIN TJ
重庆 CHONGQING ZQ
阿克苏 AKESU AKS
安宁 ANNING AN
安庆 ANQING AQ
鞍山 ANSHAN AS
安顺 ANSHUN AS
安阳 ANYANG AY我们注意到,偶数行都是空白行。所以只要过滤偶数行就行了。这样过滤掉了空白行。注意上面的NR表示当前行号,意思是偶数行全部过滤掉。next表示忽略当前行。
接下就需要过滤第一和第三字段。
# awk 'NR%2==0{next}{print $2}' city.txt | head -n 10
BEIJING
SHAN
GHAI
TIANJIN
CHONGQING
AKESU
ANNING
ANQING
ANSHAN
ANSHUN
ANYANG上面的$2表示第二个字段,结合print表示只打印第二个字段。最后就是转换和连接的工作了,就需要使用tr命令了。
# awk 'NR%2==0{next}{print $2}' city.txt | head -n 10 | tr [A-Z] [a-z] | awk '{print $1"hellowx.com"}'
beijinghellowx.com
shanghaihellowx.com
tianjinhellowx.com
chongqinghellowx.com
akesuhellowx.com
anninghellowx.com
anqinghellowx.com
anshanhellowx.com
anshunhellowx.com
anyanghellowx.comtr命令是用来作转换的,将全部大写转换我小写,然后再用awk来连接上后面的字符串。
对上面涉及的几个命令,如果不是太熟悉可能不是那么容易理解。建议,可以一步一步的来。熟悉了第一步而,然后再去理解第二部。
最后,希望大家可以认真去学习下这个命令,如果掌握了awk,就可以做出很多有意思的事情哦!
# 是一个
# 阿克苏
# 多个
# 第二个
# 天津
# 重庆
# 行号
# 上海
# 北京
# 安顺
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在局域网内绑定自建网站域名?
如何挑选优质建站一级代理提升网站排名?
如何在服务器上配置二级域名建站?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
用yum安装MySQLdb模块的步骤方法
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
微信小程序 闭包写法详细介绍
如何在腾讯云服务器上快速搭建个人网站?
如何确认建站备案号应放置的具体位置?
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
,网页ppt怎么弄成自己的ppt?
phpredis提高消息队列的实时性方法(推荐)
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Laravel如何为API生成Swagger或OpenAPI文档
Python数据仓库与ETL构建实战_Airflow调度流程详解
JavaScript数据类型有哪些_如何准确判断一个变量的类型
Laravel如何使用Collections进行数据处理?(实用方法示例)
大学网站设计制作软件有哪些,如何将网站制作成自己app?
详解Android图表 MPAndroidChart折线图
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
再谈Python中的字符串与字符编码(推荐)
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
Java解压缩zip - 解压缩多个文件或文件夹实例
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Python文件异常处理策略_健壮性说明【指导】
详解Android中Activity的四大启动模式实验简述
网站制作价目表怎么做,珍爱网婚介费用多少?
Laravel如何处理CORS跨域请求?(配置示例)
Laravel如何使用Sanctum进行API认证?(SPA实战)
如何快速上传建站程序避免常见错误?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何在阿里云服务器自主搭建网站?
Laravel如何使用查询构建器?(Query Builder高级用法)
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何在阿里云域名上完成建站全流程?
网页设计与网站制作内容,怎样注册网站?
Python高阶函数应用_函数作为参数说明【指导】
Android中AutoCompleteTextView自动提示
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
简历在线制作网站免费版,如何创建个人简历?
php打包exe后无法访问网络共享_共享权限设置方法【教程】
linux写shell需要注意的问题(必看)
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
如何在IIS管理器中快速创建并配置网站?
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
Android仿QQ列表左滑删除操作


GHAI
TIANJIN
CHONGQING
AKESU
ANNING
ANQING
ANSHAN
ANSHUN
ANYANG