加入收藏 | 设为首页 | 会员中心 | 我要投稿 武陵站长网 (https://www.50888.com.cn/)- 行业智能、建站、操作系统、语音技术、区块链!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux下awk命令的基本框架是什么,用法是怎样

发布时间:2023-08-10 10:16:25 所属栏目:Linux 来源:互联网
导读:   这篇文章主要介绍“linux下awk命令的基本结构是什么,用法是怎样”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux下
  这篇文章主要介绍“linux下awk命令的基本结构是什么,用法是怎样”的相关知识,下面会通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“linux下awk命令的基本结构是什么,用法是怎样”文章能帮助大家解决问题。
 
  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
 
  SHANGHAI
 
  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.com
 
  tr命令是用来作转换的,将全部大写转换我小写,然后再用awk来连接上后面的字符串。
 
  对上面涉及的几个命令,如果不是太熟悉可能不是那么容易理解。建议,可以一步一步的来。熟悉了第一步而,然后再去理解第二部。
 
  最后,希望大家可以认真去学习下这个命令,如果掌握了awk,就可以做出很多有意思的事情哦!
 

(编辑:武陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章