shell脚本之awk(一)
运维必备技能
概述:
1.awk是一种编程语言,用于linux/unix下对文本和数据进行扫描。处理数据来源:标准输入、文件、管道。
2.linux中常用的awk编译器版本有mawk,gawk。Redhat使用的是gawk,Ubuntu使用的是mawk.
原理:
1. 逐行扫描文件,寻找匹配你指定模式的行,并在这些行上执行你指定的操作;
2. awk 基本结构包括模式匹配(用于找到要处理的行)和处理过程(即处理动作)。
3. awk 有两个特殊的模式:BEGIN 和 END,他们被放置在没有读取任何数据之前以及在所有数据读取完成以后执行。
提示:awk 读取文件内容的每一行时,将对比改行是否与给定的模式相匹配,
如果匹配则执行处理过程,否则对该行不做任何处理。
如果没有指定处理脚本,则把匹配的行显示到标准输出,即默认处理动作是 print 打印行;
如果没有指定模式匹配,则默认匹配所有数据。
awk 基本语法格式
awk程序脚本用一对花括号来定义,必须将脚本命令放在两个花括号{}中。此外,由于awk假定程序脚本是单个文本字符串,因此必须还要将脚本放到单引号中。
下面的例子在命令行上指定了一个简单的Hello World例子:
$ awk '{print "Hello World!"}'
1. 格式: awk [ POSIX or GNU style options ] -f program-file [ -- ] file ...
注释:POSIX or GNU style options 表示 gawk 支持 POSIX 以及 GNU 两种选项;
-f 后接脚本文件;file 表示准备处理的文档名称。
2、awk常用选项参数
-F th:指定分隔符为fs(默认分隔符为空格或制表符);
-W compact or --compat, -W traditional or --traditional
在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
-v a=1:设置一个变量a,值为1
-f awk.sh :从脚本文件awk.sh中读取awk指令,以取代在命令参数中输入处理脚本。
3. awk内置变量
ARGC: 命令行参数个数
FILENAME: 当前输入文档的名称
FNR: 当前输入文档的当前记录编号,尤其当有多个输入文档时有用
NR: 输入流的当前记录编号
NF: 当前记录的字段个数
FS: 字段分隔符
OFS: 输出字段分隔符,默认为空格
ORS: 输出记录分隔符,默认为换行符\n
RS: 输入记录分隔符,默认为换行符\n
shell脚本之awk(一)的更多相关文章
- SHELL脚本之awk妙用
对于一个sougou文本文件,解压后大概4G,要求在其基础上切出第一列时间年月日时分秒增加在列中,作为hive的一个索引.先将文件head一下展示格式: [root@Master date]# hea ...
- Shell脚本之awk篇
目录:一.概述二.awk基本语法格式三.awk基本操作四.awk条件及循环语句五.awk函数六.awk演示示例(源自于man手册) 一.概述 1. 产品概述: awk是一种编程语言,用于在linux/ ...
- Shell脚本之awk详解
一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的.awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一 ...
- shell脚本,awk实现跳过文件里面的空行。
1.用awk '{if(!NF ){next}}1' file11 实现对文件里面的空行进行跳过操作,并输出结果. 2. awk '{if(!NF || /^#/){next}}1' file11 实 ...
- shell脚本,awk里面的BEGIN讲解。
解释: BEGIN{}这个特殊的pattern最常用的就是 变量赋值. BEGIN这个pattern就是文件没开始读的时候 执行 awk 'BEGIN{FS=":";OFS=&qu ...
- shell脚本,awk利用NF来计算文本显示的行数。
解释: 1.awk 'NF{a++;print a,$0;next}1' file4 首先判断NF是否存在值,第一行第二行第三行第四行都存在,进行执行后面的输出,输出后碰到next后,就结束了后面的操 ...
- shell脚本,awk替换{}里面的内容
如何将oxo{axbxc}oxo{dxexf}oxo里面的{}里面的x 替换为; 用awk实现 [root@localhost 09-30]# echo 'oxo{axbxc}oxo{dxexf}ox ...
- shell脚本,awk常见初始化变量的题目。
文件 内容如下 clone=line1gb=line1gi=line1lib=line1gb=line2gi=line2lib=line2clone=line3gb=line3gi=line3lib= ...
- shell脚本,awk如何处理文件中上下关联的两行。
文件d.txt如下内容 ggg 1portals: 192.168.5.41:3260werew 2portals: 192.168.5.43:3260 如何把文件d.txt内容变为如下内容 ggg ...
随机推荐
- 数据库连接JOIN
1,连接类型及差异 INNER JOIN:结果集只有配对成功的数据,即不包含左表或右表为空的情况: OUTER JOIN: LEFT JOIN:结果包含左表的所有记录,右表不能成功匹配的显示NULL ...
- vue实现选项卡切换--不用ui库
vue的ui库中基本都有选项卡切换的组件,但是在项目开发过程中却不一定能很好的为我们所用,因为里面的样式和 一些状态并不能很好的根据我们的项目需求进行定制.最近项目中使用的是vant-ui中的标签页, ...
- Oracle ROWNUM用法
很多朋友应该跟我一样有个疑问,为什么rownum > 5 的时候会查不到一条数据,用rownum < 5就可以查到数据,明明查询所有的时候rownum有很多啊,小朋友,你是不是有很多问号? ...
- (七)Spring Cloud 配置中心config
spring cloud config是一个基于http协议的远程配置实现方式. 通过统一的配置管理服务器进行配置管理,客户端通过http协议主动的拉取服务的的配置信息,完成配置获取. 下面我们对 ...
- Java基础知识1-Java简介
Java语言技术架构 JAVASE:(Java platform to Standard Edition)标准版,用于桌面级应用开发. JAVAME:(Java plataform to Micro ...
- C++模板心得
C++模板心得 我开始学模板的时候一脸懵逼,真的看不懂模板是怎么作用的.因为大多数人的代码把模板声明和函数.类的声明分行写,让我以为模板的作用是全局的,实际上应该像如下理解. 函数模板 templat ...
- 过滤器filter学习进度一
过滤器filter他的理解是: filter是对客户端访问资源的过滤,符合条件放行,不符合条件的不放行,并且可以对目标资源访问的前后进行逻辑处理. 快速入门: 1.编写一个过滤器的类实现filter接 ...
- day01-课后作业
#1.写一个登陆的程序,最多登陆失败3次#2.输入账号 密码,如果登录成功,程序结束,提示 欢迎 xx 登录,今天的日期是 xx#3.登录失败,重新登陆#3.要判断输入是否为空,什么也不输入,输入空格 ...
- ps 命令显示不完整的问题
今天在使用ps命令的时候,无法查找到指定名字的进程ID,仔细查找才发现ps命令查找的结果中进程启动的命令以及参数信息被截断了 问题实例 用户wanng启动了一个进程 wanng_qytrunkcros ...
- C语言实现顺序栈以及栈的特点
什么是栈? 同顺序表和链表一样,栈也是用来存储逻辑关系为 "一对一" 数据的线性存储结构,如下图所示. 从上图我们看到,栈存储结构与之前所学的线性存储结构有所差异,这缘于栈对数据 ...