- 浏览: 53260 次
- 性别:
文章分类
最新评论
引用文章http://www.jb51.net/article/58020.htm
awk正则表达式及内置函数实例详解:
1、模糊匹配:
awk ‘{if($3~/97/) print $0}' data.f:如果第三项中含有”97”则打印该行 awk ‘{if($4!~/ufcx/) print $0}' data.f:如果第三项中不含ufcx有则打印
2、精确匹配:
awk ‘{if($5==66) print $0}' data.f:如果第五项是66则打印 awk ‘{if($5!=66)print $0}' data.f : 如果第五项不是66则打印 awk ‘{if($1>$5) print $0}' data.f:如果第一项大于第五项则打印
3、大小写匹配:
awk ‘{if(/[Ss]ept/) print $0}' data.f:符合,则打印一行。 awk ‘/[Ss]ept/ {print $2}' data.f:符合,则打印第二字段
4、任意匹配:
awk ‘{if($2 ~/^.e/) print $0}' data.f:第二字段中,第二个字符为e,输出 awk ‘{if($4 ~/(lps|fcx)/) print $0}' data.f:第四个字段含有lps或fcx则输出
5、&&,||:
awk ‘{if($3 ~/1993/ && $2==”sept”) print $0}' data.f:两边都真则输出 awk ‘{if($3 ~/a9/ || $2==”sept”) print $0}' data.f:一边为真则输出
6、变量定义:
awk ‘{date=$2;price=$5; if(date ~/[Ss]ept/) print “price is ” price}' data.f:变量定义,满足date是sept或者Sept的将price输出。
7、修改数值(源文件数值不变)
awk ‘{BASELINE=42; if($1>BASELINE) $5=$5+100; print $0}' data.f:三行程序,以“;”分割
如果修改的是文本域,就要添加“”””。例如:awk ‘{if($2==”may”) $2=”tt”; print $0}' data.f
上边都是显示所有数据,awk ‘{if($2==”may”) {$2=”tt”; print $0}}' data.f这个只显示修改数据,仔细看看,其实语法和c一样,只是最外边添加了一个{}符号。
8、创建新域:(源文件数值不变)
awk ‘{if($5>$1){$8=$5-$1;print $1,$8}}' data.f: 或者awk ‘{if($5>$1){diff=$5-$1;print $1,diff}}' data.f
9、数据统计:
awk ‘{(total+=$5)}END{print total}' data.f:“{(total+=$5)}”和“{print total}”代表两个不同的代码段,如果没有END每次的累积结果都会输出,END可以理解为代码段落的标志,这样只输出最终结果即{print total}只执行一次。
10、统计文件大小:
ls –l | awk ‘{if(/^[^d]/) total=+$5}END{print “total KB:” total}':/^[^d]/行首匹配可以不写域值$1
11、Awk内置变量:
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行- F选项
NF 浏览记录的域个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
12、awk内置字符串处理函数
gsub ( r, s )在整个$0中用s替代r
gsub ( r, s , t )在整个t中用s替代r
index ( s , t )返回s中字符串t的第一位置
length ( s )返回s长度
match ( s , r )测试s是否包含匹配r的字符串,返回位置
split ( s , a , fs )在fs上将s分成序列a
sprint ( f m t , exp )返回经f m t格式化后的exp
sub ( r, s ,$0) $0中s替换第一次r出现的位置
substr ( s , p )返回字符串s中从p开始的后缀部分
substr ( s , p , n )返回字符串s中从p开始长度为n的后缀部分
13、awk ‘gsub(/6\./,78) {print $0}' data.f:将所有“6.”换成78,并输出
awk ‘{if($2==”Sept”) {sub(/3/,”9″,$0); print $0}}' data.f:只替换第一个出现的
awk ‘BEGIN{print index(“hello”,”lo”)}':输出的值为4
awk ‘{if($3==”3BC1997″) print length($3) ” ” $3}' data.f
awk ‘BEGIN{print match(“ABCD”,”B”)}':输出2
awk ‘BEGIN{print match(“ABCD”,/B/)}':“//”和“”””效果一样
awk ‘BEGIN {print split(“123#234#654″, myarray, “#”)}':返回数组元素个数,123#234#654是字符串,以“#”为分隔符,将字符串放入数组。
awk ‘{if($1==34) print substr($3,2,7)}' data.f
awk ‘BEGIN{print substr(“helloleeboy”,2,7)}':输出ellole
awk ‘BEGIN{print substr(“helloleeboy”,2,7)}' data.f:输出n遍ellole,n为data.f的行数
14、awk ‘BEGIN{print”May\tDay\n\nMay \104\141\171″}':\104\141\171表示Day。\t:tab键,\n:换行,\ddd:八进制
15、echo “65” | awk ‘{printf “%c\n”,$0}':printf函数,和c差不多,输出为A。(ASCII码)
echo “65” | awk ‘{printf “%d\n”,$0}':输出65数字。
awk ‘{printf “%-15s %s\n”,$2,$3}' data.f:“%-15s”左对齐15个字符长度
awk ‘{if(age<$1) print $0}' age=80 data.f和 awk ‘{age=49;if(age<$1) print $0}' data.f结果一样,前者将值传入awk,后者在awk中定义了一个变量。
发表评论
-
linux下sftp配置
2018-03-28 09:59 985linux centos7下sftp配置 Linux环境下自带 ... -
centos6.5 下nginx的部署填各种坑
2018-01-18 17:42 24321、本人第一次安装nginx; nginx下载路径http: ... -
linux 查看系统版本
2017-04-01 10:39 334shell命令1:lsb_release -a 适用于所有的 ... -
linux下修改war包
2017-03-06 15:32 1108Linux上修改war包上的文件 www.MyExceptio ... -
Shell遍历properties文件里面的 key和value
2017-03-06 15:31 0#!/bin/ksh IFS='=' while ... -
MYsql5.23 最大连接数设置不成功
2017-01-19 09:35 2360RHEL\CentOS 7 下 MySQL 连接数被限制为21 ... -
centos7系统下网络配置
2016-12-30 15:11 5041、检查网卡 [root@localhost ~]# ip ... -
linux下resin的https配置
2016-12-27 17:47 928对于resin官方版本对接openssl有个坑;把我差点坑死了 ... -
linux下ftp搭建
2016-12-16 16:35 2981.检查linux是否安装了ftp命令:rpm -qa|gre ... -
nexus maven私有库搭建
2016-12-12 18:12 4271.下载nexus包,linux命令 wget http:/ ... -
linux sed命令
2016-11-30 11:29 315简介 sed 是一种在线编辑器,它一次处理一行内容。处理时, ... -
intellij idea 下resin容器远程调试
2016-11-16 09:27 5391resin远程调试(我使用的是resin-4.0.41版本): ... -
Hive-1.2.1 HWI 图形化界面问题
2016-10-27 15:16 5411、下载apache-hive-1.2.1-src.tar.g ... -
Linux下免密码登陆ssh
2016-10-21 11:14 284第一步:ssh-keygen 创建公钥和密钥 [root@ji ... -
Linux下查看系统的位数和系统信息
2015-05-15 00:58 1444对于linux系统,,安装一些软件,,有时候要考虑到linux ...
相关推荐
### Linux 下 awk 命令详解 #### 一、引言 `awk` 是一个功能强大的文本处理工具,在 Unix 和类 Unix 操作系统(如 Linux)中被广泛使用。它不仅可以进行模式匹配,还能执行复杂的文本处理任务。本文将详细介绍 `awk...
Awk 支持高级功能,比如用户自定义函数和动态正则表达式,这使得它成为 Linux/Unix 下的强大编程工具之一。 Awk 的主要工作方式是逐行扫描文件,寻找符合特定模式的行,并在这些行上执行预定义的操作。如果未指定...
### Linux环境下AWK开发详解 #### 一、AWK简介 AWK是一种强大的文本处理工具,广泛应用于Linux和Unix环境中。对于那些熟悉UNIX系统的人来说,AWK可能不如其他一些工具那样为人熟知,但它的重要性不容忽视。AWK的...
这两种语言都可以实现sed和awk的功能,但在某些场景下可能更加灵活和高效。 **Perl**的特点: - 强大的正则表达式支持。 - 高效的数据处理能力。 - 广泛应用于网络编程、文本处理等领域。 **Python**的特点: - ...
AWK 是一个强大的文本处理工具,在 Linux 和 Unix 系统中广泛使用。AWK 的基本命令格式如下: ``` awk [选项] '模式或条件 {动作}' 文件名 ``` #### 选项 - `-F` 或 `--field-separator`:用于指定输入记录中的字段...
Linux awk 高级应用 awk 是一个基于模式匹配检查输入文本的数据处理引擎,由 Aho Wwinberger Kernighan 创造。它通常用在 shell 中,获取指定的数据,单独使用时,可对文本数据做统计。awk 也是一种编程语言,拥有 ...
Linux系统中的文本处理工具awk和cut的应用非常广泛,尤其在shell脚本中进行数据抽取、转换和报告的生成上。本文将详细解读awk和cut的高级应用,以及如何在shell脚本中添加色彩处理功能,以提高文本信息的可读性和...
AWK是一种强大的文本分析工具,尤其在Linux和Unix环境下被广泛使用。它能够对文本文件中的数据行进行处理,提取、分析或者转换数据,非常适合数据分析和报告生成。本笔记将详细介绍AWK的基本概念、语法、命令选项...
Linux awk 详解 awk 是一种功能强大的程序语言,主要用于处理文档资料...awk 语言作为一种功能强大的工具,在 Linux 系统管理员和程序员中广泛应用。awk 语言易于学习和掌握,且特别灵活,非常适合对文档资料的处理。
Linux中的`awk`是一个强大的文本分析工具...总结,`awk`是Linux文本处理的重要工具,其灵活性和强大的功能使其在数据分析、日志分析等领域有着广泛的应用。通过深入学习和实践,我们可以充分利用`awk`来提高工作效率。
2. **字段分隔符**:默认情况下,AWK将空格或制表符视为字段分隔符,但可以通过`-F`选项自定义分隔符。 3. **内置变量**:如`$0`代表整行,`$1`到`$NF`分别代表每一分隔后的字段。 4. **模式匹配**:可以使用正则...
"Linux awk 完全手册范本" awk 是一种功能强大的样式扫描和处理工具,能够完成 grep 和 sed 所能完成的全部工作,并且具有样式装入、流控制、数学运算符、进程控制语句、置的变量和函数等功能。awk 的优点是简单、...
Awk作为Linux和Unix环境下的核心工具之一,其功能强大且用途广泛。无论是简单的文本搜索,还是复杂的数据处理和分析,Awk都能胜任。掌握Awk的基本语法和高级特性,将极大地提高你在日常工作中处理文本数据的效率和...
Linux 主要 shell 命令、sed、awk 使用详解 本文将详细介绍 Linux 的主要 shell 命令、sed 和 awk 的使用方法和原理。shell 是用户和 Linux 操作系统之间的接口,用户可以通过 shell 输入命令来操作 Linux 系统。...
### Linux下的Windows应用替代方案详解 #### 概述 随着Linux系统的不断成熟和发展,越来越多的用户选择使用Linux作为他们的日常操作系统。尽管如此,在某些应用场景下,仍存在对Windows应用程序的需求。为了满足这...
10. 实战案例:通过丰富的实例,展示sed和awk在实际工作中的应用,如日志分析、数据转换和报告生成等。 通过阅读本书,读者不仅可以掌握sed和awk的基本操作,还能深入了解它们的高级特性和用法,从而在面对各种文本...
awk 是一款功能强大且灵活的文本处理工具,在 Linux 系统中广泛应用于数据处理、文本处理和报表生成等领域。本文档将深入分析 awk 的使用和实现机制,探讨 awk 的内置变量、指令和函数,并通过实践示例加深理解。 ...