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 ...
随机推荐
- 实验十--- MySQL过程式数据库对象
实验十 MySQL过程式数据库对象 一. 实验内容: 1. 存储过程的创建和调用 2. 存储函数的创建和调用 3. 触发器的创建和触发 4. 事件的创建和修改 一. 实验项目:员工管理数据库 用于 ...
- Java 程序该怎么优化?(命令篇)
灵魂拷问,JDK 提供的命令,除了 java.javac,你还用过哪些命令呢? 灵魂再拷问,若你写的 Java 程序,出现了性能问题,该怎么去排查呢? Java 作为编程语言中的战斗机,JDK 默认已 ...
- Rust入坑指南:万物初始
有没有同学记得我们一起挖了多少个坑?嗯-其实我自己也不记得了,今天我们再来挖一个特殊的坑,这个坑可以说是挖到根源了--元编程. 元编程是编程领域的一个重要概念,它允许程序将代码作为数据,在运行时对代码 ...
- STM32F103ZET6通用定时器的输入捕获
1.通用定时器输入捕获功能简介 通用定时器的输入捕获模式可以用来测量脉冲宽度或者测量频率. STM32的每个通用定时器都有4个输入捕获的通道,分别是TIMx_CH1.TIMx_CH2.TIMx_CH3 ...
- Redis底层结构概述
可以使用 object encoding <key> 查看使用的具体数据结构 原图链接
- 分治与递归-Starssen矩阵乘法
代码实现: /** * 矩阵乘法求解 * @author Administrator * */ public class Strassen { public static final int NUMB ...
- 3D城市
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- uni_app商城项目(完成)
总结: 1.uni-app的跨段适配性,真的特别强,完成相关代码的书写,HbuilderX编辑器提供的打包十分方便. 2.开发小程序,H5等移动端开发, 比开发电脑端简单不少,但有时候坑也挺多的. 3 ...
- javascript入门 之 ztree(七 结点的查询)
<!DOCTYPE html> <HTML> <HEAD> <meta http-equiv="content-type" content ...
- Array(数组)对象-->shift() 方法
1.定义和用法 shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值. 语法: array.shift() 注意: 此方法改变数组的长度! 举例: var arr = [1,2, ...