Linux记录-AWK语法(转载)
1.原理
awk,一个行文本处理工具,逐行处理文件中的数据
语法:awk 'pattern + {action}'
说明:
(1)单引号''是为了和shell命令区分开;
(2)大括号{}表示一个命令分组;
(3)pattern是一个过滤器,表示命中pattern的行才进行action处理;
(4)action是处理动作;
(5)使用#作为注释;
pattern参数可以是egrep正则中的一个,正则使用/pattern/
例子:显示hello.txt中的第3行至第5行:cat hello.txt | awk 'NR==3, NR==5{print;}'
例子:显示hello.txt中,正则匹配hello的行:cat hello.txt | awk '/hello/'
说明:
(1)pattern和action可以只有其一,但不能两者都没有;
(2)默认的action是print;
例子:显示hello.txt中,长度大于100的行号:cat hello.txt | awk 'length($0)>80{print NR}'
#内置变量
FS 分隔符,默认是空格
NR 当前行数,从1开始
NF 当前记录字段个数
$0 当前记录
$1~$n 当前记录第n个字段
例子:显示hello.txt中的第3行至第5行的第一列与最后一列:cat hello.txt | awk 'NR==3, NR==5{print $1,$NF}'
#内置函数
gsub(r,s):在$0中用s代替r
index(s,t):返回s中t的第一个位置
length(s):s的长度
match(s,r):s是否匹配r
split(s,a,fs):在fs上将s分成序列a
substr(s,p):返回s从p开始的子串
#时间格式
$ awk '{ now=strftime( "%D", systime() ); print now }'
$ awk '{ now=strftime("%m/%d/%y"); print now }'
#操作符
##运算符
类似于c,支持+、-、*、/、%、++、–、+=、-=等诸多操作;
##判断符
类似于c,支持==、!=、>、=>、~(匹配于)等诸多判断操作;
#控制流程
##BEGIN和END
BEGIN和END本质是一个pattern。
BEGIN用于awk程序开始开始前,做一些初始化的工作;
END用于awk程序结束前,做一些收尾的工作。
例子:awk 'begin { count=0;} { count+=length($0); } { print count; } end'
##流程控制语句
(1)if(condition){}else{}
(2)while{}
(3)do{}while(condition);
(4)for(init;condition;step){}
(5)break/continue:如果有END,会执行END中的收尾工作
流程控制语句用法几乎与c相同。
awk '{if(NR>=20 && NR<=30) print $1}' test.txt
awk与shell的交互
awk中使用shell中定义的变量:使用单引号即可;
#!/bin/bash
STR="hello"
echo | awk '{
print "'${STR}'";
}'
awk中使用shell命令:使用双引号,或者system命令;
#!/bin/bash
echo hello | awk '{
print $0 | "cat" 或 system("date > date.txt ")
}'
getline:awk里,从文件中读取变量到awk中
#!/bin/bash
echo | awk '{
while(getline < "date.txt")
{
print $0;
}
}'
Linux记录-AWK语法(转载)的更多相关文章
- linux之awk
相较于sed 常常作用于一整个行的处理,awk 则比较倾向于一行当中分成数个『字段』来处理. 因此,awk 相当的适合处理小型的数据数据处理呢! awk 通常运作的模式是这样的: [root@linu ...
- linux之awk手册
awk 手册 原文 Table of Contents 1. awk简介 2. awk命令格式和选项 2.1. awk的语法有两种形式 2.2. 命令选项 3. 模式和操作 3.1. 模式 3.2 ...
- [转帖]Linux中awk工具的使用
Linux中awk工具的使用 2018年10月09日 17:26:20 谢公子 阅读数 2170更多 分类专栏: linux系统安全 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权 ...
- 性能工具之linux三剑客awk、grep、sed详解
前言 linux 有很多工具可以做文本处理,例如:sort, cut, split, join, paste, comm, uniq, column, rev, tac, tr, nl, pr, he ...
- Linux中awk的用法
一.awk简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是lin ...
- linux中awk命令(最全面秒懂)
目录 一:linux中awk命令 1.awk命令简介 2.awk作用 3.awk的语法格式 4.解析awk使用方法 5.参数 6.awk的生命周期 二:awk中的预定义变量 三:awk运行处理规则的执 ...
- linux中awk命令详解(最全面秒懂)
一:linux中awk命令 1.awk命令简介 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具. 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinber ...
- Linux三剑客awk
Linux三剑客awk awk是一个强大的linux命令,有强大的文本格式化的能力,好比将一些文本数据格式化成专业的excel表的样式 awk早期在Unix上实现,我们用的awk是gawk,是GUN ...
- awk语法
awk是一个非常棒的数字处理工具.相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分为数个“字段”来处理.运行效率高,而且代码简单,对格式化的文本处理能力超强.先来一个例子: 文件a,统计 ...
随机推荐
- Atlas & mysql-proxy
Atlas https://github.com/Qihoo360/Atlas https://github.com/Qihoo360/Atlas/wiki/Installing-Atlas Atla ...
- Difference between prop and attr in different version of jquery
jQuery <1.9$('#inputId').attr('readonly', true); jQuery 1.9+$('#inputId').prop('readonly', true); ...
- Jfrog Artifactory 创建docker 镜像仓库以及 push 镜像到 该仓库.
1. 安装aitifactory 以及 启动 使用30天有效期激活 不在阐述. 2. 登录artifactory username:admin password:password 3. 创建 仓库 在 ...
- Win10 1803 Spring Creators update Consumer edition的版本记录
安装时可选择的版本列表 安装完之后的版本: 3. 时间线更新 4. Focus assistant
- python 协程库gevent学习--源码学习(一)
总算还是要来梳理一下这几天深入研究之后学习到的东西了. 这几天一直在看以前跟jd对接的项目写的那个gevent代码.为了查错,基本上深入浅出了一次gevent几个重要部件的实现和其工作的原理. 这里用 ...
- gitbook 简单使用
gitbook 简单使用 之前由于公司培训过使用 gitbook,当时也没有进行安装使用.当时就感觉就是 markdown 语法,加上我本来就是使用 markdown 进行写博客之类.再加上这个东西本 ...
- SpringMVC @RequestBody的使用
@RequestBody的作用 @RequestBody用于读取Request请求的body数据,然后利用SpringMVC配置的HttpMessageConverter对数据进行转换,最后把转换后的 ...
- Java之Array(数组)说明
代码说明: package array; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** ...
- Java MD5Util
package util; import java.security.MessageDigest; public class MD5Util { public static String strin ...
- codeforces469B
Chat Online CodeForces - 469B 问题描述 你和你的朋友经常在网上聊天.你的朋友作息规律每天只会在p个时间段[ai,bi]在线.你作息混乱,假设你在t时刻起床,那么你会在q个 ...