Blog.041 Shell 编程 awk 命令详解
本章目录
1. awk 命令概述
1.1 awk 常见用法
1.2 awk 工作原理
1.3 awk 命令格式
2. 用法实例
2.1 按行输出文本
2.2 按字段输出文本
2.3 通过管道符号和双引号调用shell命令
2.4 组合使用
在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于 Shell 脚本,完成各种自动化配置任务。
sed 命令常用于一整行的处理,而 awk 比较倾向于将一行分成多个“字段”然后再进行处理,且默认情况下字段的分隔符为空格或 tab 键。
awk 执行结果可以通过 print 的功能将字段数据打印显示。
在使用 awk 命令的过程中,可以使用逻辑操作符:
- “&&”表示“与”;
- “||” 表示“或”;
- “!”表示“非”。
还可以进行简单的数学运算:
- 如 +、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。
awk 借用 shell 中类似于位置变量的方法, 用 $1、$2、$3… 顺序地表示行(记录)中的不同字段。
另外 awk 用 $0 表示整个行(记录)。
不同的字段之间是通过指定的字符分隔。
awk 默认的分隔符是空格。
awk 允许在命令行中用 “-F 分隔符” 的形式来指定分隔符。
命令行格式:
- awk 选项 '模式或条件 {编辑指令}' 文件 1 文件 2 …
#过滤并输出文件中符合条件的内容
- awk -f 脚本文件 文件 1 文件 2 …
#从脚本中调用编辑指令,过滤并输出内容
awk 包含几个特殊的内建变量(可直接用)如下所示:
FS | 指定每行文本的字段分隔符,默认为空格或制表位。 |
NF | 当前处理的行的字段个数。 |
NR | 当前处理的行的行号(序数)。 |
$0 | 当前处理的行的整行内容。 |
$n | 当前处理行的第 n 个字段(第 n 列)。 |
FILENAME | 被处理的文件名。 |
RS |
“行“分割符,awk从文件上读取资料时,将根据RS的定义把资料切割成许多条记录; |
- 当 getline 左右无重定向符和或时,getline 作用于当前文件,读入当前文件的第一行给其后跟着的变量 var 或 $0,由于 awk 在处理 getline 之前已经读入了一行,所以 getline 得到的返回结果是隔行的;
- 当 getline 左右有重定向符和或时,getline 则作用于定向输入文件,由于该文件是刚打开的,并没有被 AWK 读过,只是 getline 读入,那么 geiline 返回的是该文件的第一行,而不是隔一行。
-
原文地址:https://www.cnblogs.com/cityfell/p/15097049.html
- 另类大数据:中国有嘻哈的rapper们都在唱些什么?
- jquery属性值选择器
- sqlserver 2000/2005 Ambiguous column error错误解决办法
- jquery 层级选择器
- Twitter发布基于组件的轻量级JavaScript框架——Flight
- jquery的基本选择器
- WordPress 路径相关函数总结(一):站点路径相关函数
- 修复Visual Studio 2010 SP1的Toolbox导致的VS不可用
- 破解Excel 密码保护
- 配置Subversion
- WordPress 路径相关函数总结(二):主题路径相关函数
- ASP.NET 2.0 中 Web 事件
- Visual Studio 必备可视化插件推荐
- WordPress 路径相关函数总结(一):站点路径相关函数
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux十个新手命令分享
- Linux 内核通用链表学习小结
- 从零开始针对 .NET 应用的 DevOps 运营实践 - 运行环境搭建
- 面试问我,创建多少个线程合适?我该怎么说
- C语言链表实例--玩转链表
- 帝国CMS怎么利用灵动标签循环调用多个栏目下的文章
- PHP 加密 Password Hashing API基础知识点
- php libevent 功能与使用方法详解
- 对Python3中bytes和HexStr之间的转换详解
- 用python代码将tiff图片存储到jpg的方法
- php下的原生ajax请求用法实例分析
- php 中的信号处理操作实例详解
- php多进程中的阻塞与非阻塞操作实例分析
- 解决android viewmodel 数据刷新异常的问题
- Python装饰器简单用法实例小结