awk 判断最后一行 |
您所在的位置:网站首页 › linux输出文本最后一行内容 › awk 判断最后一行 |
第一篇 awk简介与表达式实例
一种名字怪异的语言
模式扫描和处理,处理数据和生成报告。
awk不仅仅是linux系统中的一个命令,而且是一种编程语言;它可以用来处理数据和生成报告(excel);处理的数据可以是一个或多个文件;可以是直接来自标准输入,也可以通过管道获取标准输入;awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行更为复杂的运用。 sed处理stream editor文本流,水流。 一、awk环境简介本文涉及的awk为gawk,即GNU版本的awk。 [root@creditease awk]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) [root@creditease awk]# uname -r 3.10.0-862.el7.x86_64 [root@creditease awk]# ll `which awk` lrwxrwxrwx. 1 root root 4 Nov 7 14:47 /usr/bin/awk -> gawk [root@creditease awk]# awk --version GNU Awk 4.0.2 二、awk的格式awk指令是由模式、动作,或者模式和动作的组合组成。 ![]() ![]() ![]() 1)NF(number of field)表示一行中的区域(列)数量,$NF取最后一个区域。 2)$符号表示取某个列(区域),$1,$2,$NF 3)NR (number of record) 行号,awk对每一行的记录号都有一个内置变量NR来保存,每处理完一条记录NR的值就会自动+1 4)FS(-F)field separator 列分隔符,以什么把行分隔成多列 3.1 指定分隔符 [root@creditease awk]# awk -F "#" '{print $NF}' awk.txt GKL$123 GKL$213 GKL$321 [root@creditease awk]# awk -F '[#$]' '{print $NF}' awk.txt 123 213 321 3.2 条件动作基本的条件和动作 [root@creditease awk]# cat awk.txt ABC#DEF#GHI#GKL$123 BAC#DEF#GHI#GKL$213 CBA#DEF#GHI#GKL$321 [root@creditease awk]# awk -F "#" 'NR==1{print $1}' awk.txt ABC 3.3 只有条件 [root@creditease awk]# awk -F "#" 'NR==1' awk.txt ABC#DEF#GHI#GKL$123默认会有动作{print $0} 3.4 只有动作 [root@creditease awk]# awk -F "#" '{print $1}' awk.txt ABC BAC CAB默认处理所有行 3.5 多个模式和动作 [root@creditease awk]# awk -F "#" 'NR==1{print $NF}NR==3{print $NF}' awk.txt GKL$123 GKL$321 3.6 对$0的认识awk中$0表示整行 [root@creditease awk]# awk '{print $0}' awk_space.txt ABC DEF GHI GKL$123 BAC DEF GHI GKL$213 CBA DEF GHI GKL$321 3.7 FNRFNR与NR类似,不过多文件记录不递增,每个文件都从1开始(后边处理多文件会讲到) [root@creditease awk]# awk '{print NR}' awk.txt awk_space.txt 1 2 3 4 5 6 [root@creditease awk]# awk '{print FNR}' awk.txt awk_space.txt 1 2 3 1 2 3 四、正则表达式与操作符awk同sed一样也可以通过模式匹配来对输入的文本进行匹配处理。 awk也支持大量的正则表达式模式,大部分与sed支持的元字符类似,而且正则表达式是玩转三剑客的必备工具。 awk支持的正则表达式元字符 ![]() awk默认不支持的元字符,和需要添加参数才能支持的元字符 ![]() 正则表达式的运用 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |