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 ...
随机推荐
- 2783: 【基础】小 X 玩游戏(game)
2783: [基础]小 X 玩游戏(game) 时间限制: 1 Sec 内存限制: 64 MB 提交: 752 解决: 294 [提交] [状态] [讨论版] [命题人:ghost79] 题目描述 听 ...
- nexus Maven私服的相关配置
Maven私服中如需本地上传Maven私服内容则需在 setting.xml中配置如下: <server> <id>nexus-releases</id> < ...
- eclipse项目导入和导出
导入导出过程这里推荐一下一篇他人的文章: https://blog.csdn.net/qq_41937388/article/details/87073572 注意: 1.导入第3步中,如果你的项目已 ...
- Scratch 第4课满天星
素材及视频下载 链接:https://pan.baidu.com/s/1qX0T2B_zczcLaCCpiRrsnA提取码:xfp8
- grub2手动引导linux
仅需要三个命令 1.set root=(hd*,gpt*) hd*为系统所在磁盘,从0开始: gpt为磁盘分区表格式,*为第几分区,mbr分区表为msdos*: 2.linux /boot/vmlin ...
- MTK Android Driver :Camera
MTK Android Driver :camera 1.相关代码位置:mediatek\config\XXXX(红色字为具体的项目名) 文件:ProjectConfig.mk CUSTOM_KERN ...
- Linux网络安全篇,认识防火墙(一)
一.概念 防火墙分为软件防火墙和硬件防火墙.我们的主要讨论范围为软件防火墙. 软件防火墙又分为网络型和单一型的管理. 1.单一主机型防火墙 (1)数据包过滤型的Netfilter (2)依据服务软件程 ...
- Java字符串的应用
字符串的简单应用 public class join { public static void main (String args[]){ String s1 = new String (" ...
- 文本表格文件指定分隔符分列转Excel(java实现)
我的需求: 嗯,实习中遇到,需要过滤数据然后以指定的列名输出为excel 我是这样解决的: 写出到一个文本或者表格文件然后指定分隔符分列的输出excel,因为要设计去重处理. 我需要做的: 写一个文本 ...
- AJ学IOS(13)UI之UITableView学习(下)汽车名牌带右侧索引
AJ分享,必须精品 先看效果图 代码 ViewController #import "NYViewController.h" #import "NYCarGroup.h& ...