Linux基础教程 linux awk内置变量使用介绍
awk是个优秀文本处理工具,可以说是一门程序设计语言。下面是兄弟连Linux培训给大家介绍的awk内置变量。
一、内置变量表
属性 说明
$0 当前记录(作为单个变量)
$1~$n 当前记录的第n个字段,字段间由FS分隔
FS 输入字段分隔符 默认是空格
NF 当前记录中的字段个数,就是有多少列
NR 已经读出的记录数,就是行号,从1开始
RS 输入的记录他隔符默 认为换行符
OFS 输出字段分隔符 默认也是空格
ORS 输出的记录分隔符,默认为换行符
ARGC 命令行参数个数
ARGV 命令行参数数组
FILENAME 当前输入文件的名字
IGNORECASE 如果为真,则进行忽略大小写的匹配
ARGIND 当前被处理文件的ARGV标志符
CONVFMT 数字转换格式 %.6g
ENVIRON UNIX环境变量
ERRNO UNIX系统错误消息
FIELDWIDTHS 输入字段宽度的空白分隔字符串
FNR 当前记录数
OFMT 数字的输出格式 %.6g
RSTART 被匹配函数匹配的字符串首
RLENGTH 被匹配函数匹配的字符串长度
SUBSEP \034
2、实例
1、常用操作
[chengmo@localhost ~]$ awk '/^root/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
/^root/ 为选择表达式,$0代表是逐行
2、设置字段分隔符号(FS使用方法)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":"}/^root/{print $1,$NF}' /etc/passwd
root /bin/bash
FS为字段分隔符,可以自己设置,默认是空格,因为passwd里面是”:”分隔,所以需要修改默认分隔符。NF是字段总数,$0代表当前行记录,$1-$n是当前行,各个字段对应值。
3、记录条数(NR,FNR使用方法)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":"}{print NR,$1,$NF}' /etc/passwd
1 root /bin/bash
2 bin /sbin/nologin
3 daemon /sbin/nologin
4 adm /sbin/nologin
5 lp /sbin/nologin
6 sync /bin/sync
7 shutdown /sbin/shutdown
……
NR得到当前记录所在行
4、设置输出字段分隔符(OFS使用方法)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";OFS="^^"}/^root/{print FNR,$1,$NF}' /etc/passwd
1^^root^^/bin/bash
OFS设置默认字段分隔符
5、设置输出行记录分隔符(ORS使用方法)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";ORS="^^"}{print FNR,$1,$NF}' /etc/passwd
1 root /bin/bash^^2 bin /sbin/nologin^^3 daemon /sbin/nologin^^4 adm /sbin/nologin^^5 lp /sbin/nologin
从上面看,ORS默认是换行符,这里修改为:”^^”,所有行之间用”^^”分隔了。
6、输入参数获取(ARGC ,ARGV使用)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";print "ARGC="ARGC;for(k in ARGV) {print k"="ARGV[k]; }}' /etc/passwd
ARGC=2
0=awk
1=/etc/passwd
ARGC得到所有输入参数个数,ARGV获得输入参数内容,是一个数组。
7、获得传入的文件名(FILENAME使用)
[chengmo@localhost ~]$ awk 'BEGIN{FS=":";print FILENAME}{print FILENAME}' /etc/passwd
/etc/passwd
FILENAME,$0-$N,NF 不能使用在BEGIN中,BEGIN中不能获得任何与文件记录操作的变量。
8、获得linux环境变量(ENVIRON使用)
[chengmo@localhost ~]$ awk 'BEGIN{print ENVIRON["PATH"];}' /etc/passwd
/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/lib/icecc/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/java/jdk1.5.0_17/bin:/usr/java/jdk1.5.0_17/jre/bin:/usr/local/mysql/bin:/home/web97/bin
ENVIRON是子典型数组,可以通过对应键值获得它的值。
9、输出数据格式设置:(OFMT使用)
[chengmo@localhost ~]$ awk 'BEGIN{OFMT="%.3f";print 2/3,123.11111111;}' /etc/passwd
0.667 123.111
OFMT默认输出格式是:%.6g 保留六位小数,这里修改OFMT会修改默认数据输出格式。
10、按宽度指定分隔符(FIELDWIDTHS使用)
[chengmo@localhost ~]$ echo 20100117054932 | awk 'BEGIN{FIELDWIDTHS="4 2 2 2 2 3"}{print $1"-"$2"-"$3,$4":"$5":"$6}'
FIELDWIDTHS其格式为空格分隔的一串数字,用以对记录进行域的分隔,FIELDWIDTHS="4 2 2 2 2 2"就表示$1宽度是4,$2是2,$3是2 .... 。这个时候会忽略:FS分隔符。
11、RSTART RLENGTH使用
[chengmo@localhost ~]$ awk 'BEGIN{start=match("this is a test",/[a-z]+$/); print start, RSTART, RLENGTH }'
11 11 4
[chengmo@localhost ~]$ awk 'BEGIN{start=match("this is a test",/^[a-z]+$/); print start, RSTART, RLENGTH }'
0 0 –1
RSTART 被匹配正则表达式首位置,RLENGTH 匹配字符长度,没有找到为-1.
分享到:
相关推荐
awk还提供了内置变量,如NR(已读取的行数)、NF(当前行的字段数)和FS(字段分隔符)。通过巧妙运用这些变量,你可以编写出灵活且高效的脚本。 在描述中提到的“文本流问题”,可能涵盖各种情况,如过滤特定行、...
- **内置变量**:如NR(已读取的行数)、NF(当前行的字段数)、FS(字段分隔符)等。 - **函数**:awk提供了内置的数学和字符串处理函数,如length()、split()、substr()等。 - **自定义函数**:可以创建用户...
5. Awk基础:介绍awk的语法结构,如模式和动作,以及内置变量和函数。 6. Awk模式匹配:理解awk中的模式匹配机制,包括字段分割和模式匹配规则。 7. 控制结构:学习如何在awk中使用条件语句(if-else)和循环(for,...
在开始学习AWK之前,你需要具备一定的GNU/Linux基础,包括熟悉命令行操作和基本的shell脚本编程。了解正则表达式也会对学习AWK有所帮助,因为AWK中的模式匹配很大程度上依赖于正则表达式。 **第一章:概述** 本章将...
"04.BASH内置变量的使用"涵盖了BASH中许多预定义的环境变量和特殊变量,比如$0(脚本名)、$#(参数数量)、$$(当前进程ID)等。熟练掌握这些变量,能让你在编写脚本时更加灵活高效。 最后,"05.awk编程与应用"是...
4. **awk内置变量**: - `$0`表示整个输入行,`$1`、`$2`等表示字段。 - `NF`是字段数量,`NR`是已读行数。 - `OFS`是输出字段分隔符,`ORS`是输出记录分隔符。 5. **条件表达式和函数**: - Awk支持逻辑与`&&`...
它不需要预先编译,具有灵活的变量类型使用、关联数组和内置的管道功能,这些特点都极大地简化了数据处理的复杂度,使得awk在UNIX环境下成为了处理文本的利器。 在学习awk之前,读者需要具备一定的UNIX操作知识,...
【AWK 使用教程】 在Linux环境中,AWK是一种强大的文本分析工具,被广泛用于处理结构化数据。AWK的工作原理是基于行(记录)和字段(记录中的元素)的概念,它能够方便地处理和解析文件中的特定模式。本文档旨在为...
awk默认使用空格或制表符作为字段分隔符,但可以通过`FS`内置变量自定义分隔符。例如,以逗号分隔: ```bash awk -F ',' '{ ... }' ``` **3. 访问字段** 在awk中,使用$符号后跟字段编号来访问字段。例如,第一字段...
2. **内置变量**:预定义的变量如$0表示整行,$1至$NF表示字段值,NF表示字段数量,这些变量简化了数据提取。 3. **内置函数**:Awk提供了许多内置函数,如print、printf用于输出,length计算字符串长度,split分割...
awk是一种强大的文本分析工具,它在Unix/Linux环境中被广泛使用。这个详细的awk教程旨在帮助初学者理解并掌握awk的用法。教程分为多个部分,以丰富的实例和解析来逐步引导读者深入awk的世界。 【前言】 本手册主要...
书中详细介绍了AWK的基本语法、规则、模式匹配机制、内置变量和函数,以及如何利用AWK进行实际的编程任务。 通过学习这份手册,你可以掌握以下AWK的知识点: 1. **AWK语法基础**:包括BEGIN和END规则,动作和模式...
Linux Shell 脚本编程基础知识点总结 Linux 脚本编写基础 1.1 语法基本介绍 * `#!` 符号用来告诉系统它后面的参数是用来执行该文件的程序 * 在 Linux 中,使用 `/bin/sh` 来执行程序 * 编辑好脚本后,需要使其可...
awk内置了多个函数,如`length()`(返回字符串长度)和`substr()`(提取子字符串)。此外,还可以自定义函数来增强awk脚本的功能。 ```awk function square(x) {return x * x} awk '{print square($1)}' ``` ### 7...
1. 内置变量:AWK提供了许多内置变量,如NF(当前记录的字段数量)、NR(已读取的记录数)和FNR(在当前文件中已读取的记录数)等,这些变量极大地简化了编程过程。 2. 字段分隔符:默认情况下,AWK将空格或制表符...
2. **字段处理**:介绍如何使用`awk`的内置变量如`$0`(完整行)、`$1`到`$NF`(字段)来操作文本数据。 3. **正则表达式**:详细讲解如何在`awk`和`sed`中使用正则表达式进行模式匹配。 4. **脚本实例**:提供...
在awk中,有一些内置的环境变量,如`NR`表示已经处理的记录数,`NF`表示当前记录的域数量,`FS`是字段分隔符等。 ### 5. awk运算符 awk支持多种运算符,包括比较运算符、逻辑运算符、赋值运算符以及算术运算符。...
本资源包包含了关于AWK的实用资料,包括一个PDF实例教程和一个简明使用指南。 1. **AWK基础** - **变量**:AWK中的变量是自动声明的,无需预定义类型,可以是数字或字符串。 - **模式和动作**:AWK程序由模式和...
这可能包括如何定义模式、动作、字段分隔符,以及如何使用内置变量和函数。通过这个指南,学习者可以了解如何使用AWK进行数据过滤、统计计算、格式化输出等任务。 "www.pudn.com.txt"可能是一个实际的AWK脚本或者...
9.2.6 awk内置变量 73 9.2.7 NF、NR和FILENAME 74 9.2.8 awk操作符 75 9.2.9 内置的字符串函数 78 9.2.10 字符串屏蔽序列 80 9.2.11 awk输出函数printf 81 9.2.12 printf修饰符 81 9.2.13 awk数组 86 9.3 小结 88 第...