【Linux】gawk编辑器二

一、变量

gawk编程语言支持两种变量:内建变量和自定义变量。

1、内建变量

gawk使用内建变量来引用一些特殊的功能。

字段和记录分隔符变量

数据字段变量

此变量允许使用**美元符号()**和字段在记录中的位置值来引用对应的字段。要引用记录中的第一个数据字段,就用变量 1,要引用第二个数据字段,就用变量 $2,以此类推。

数据字段由字段分隔符划定。默认情况下,字段分隔符是一个空白字符:空格或制表符 。可以通过使用命令行选项 -F ,或者使用特殊的内建变量 FS 修改字段分隔符。

|-----------------|---------------------------|
| FIELDWIDTHS | 由空格分隔的一列数字,定义了每个数据字段的确切宽度 |
| FS | 输入字段分隔符 |
| RS | 输入记录分隔符 |
| OFS | 输出字段分隔符 |
| ORS | 输出记录分隔符 |
[gawk数据字段和记录变量]

默认情况下,gawk会将OFS变量的值设置为一个空格。print命令会自动将OFS变量的值置于输出的每个字段之间。

bash 复制代码
gawk 'BEGIN{FS=","} {print $1,$2,$3}' test2.txt

可以通过设置0FS变量,可以在输出中用任意字符串来分隔字段。

bash 复制代码
gawk 'BEGIN{FS=","; OFS="*"} {print $1,$2,$3}' test2.txt

FIELDWIDTHS变量可以不通过字段分隔符读取记录。一旦设置了此变量,gawk就会忽略FS变量,并根据提供的字段宽度计算字段。

bash 复制代码
gawk 'BEGIN{FIELDWIDTHS="2 4 5 3"} {print $1,$2,$3,$4}' test3.txt

变量RSORS定义了gawk对数据流中记录的处理方式。默认情况下,gawk会将RS和ORS设置为换行符。

默认的RS值表明,输入数据流中的每行文本就是一条记录。

包含地址和电话号码的数据中,占据了多行

可以把FS变量设置成换行符,这样就表明数据流中的每一行都是一个单独的字段,行内的所有数据都属于同一个数据字段。同时把RS变量设置成空字符串,然后在数据记录之间留一个空行。gawk就会把每一个空行视为记录分隔符。

bash 复制代码
 gawk 'BEGIN{FS="\n"; RS=""} {print $1,$3}' test3.txt

gawk将文件中的每一行都视为一个字段,同时将空行作为记录分隔符。

数据变量

ENVIRON变量使用关联数组来提取shell环境变量,其中关联数组用文本而非数值作为数组索引。

如下所示,可以用这种方法从shell中提取任何环境变量的值,以宫gawk脚本使用。

bash 复制代码
gawk '
BEGIN{
print ENVIRON["HOME"]
print ENVIRON["PATH"]
}'
相关推荐
想你依然心痛2 小时前
嵌入式Linux安全加固:SELinux、Capabilities与Seccomp——强制访问控制与沙箱
linux·运维·安全
AAA@峥3 小时前
容器数据不丢失:Docker 分层存储 + Volume 共享、备份迁移完整指南
运维·docker·容器
MDM.Plus3 小时前
苹果MDM技术演进:从远程控制到设备信任体系的构建
运维·服务器·安全·ios·mdm·手机店
REDcker3 小时前
macOS 挂载 Linux 远程目录详解
linux·运维·macos
2601_961593424 小时前
Mac 上搭建Linux环境吗?VMware + CentOS Stream 9 镜像快速部署
linux·运维·ide·macos·centos
dddwjzx4 小时前
嵌入式Linux C应用编程入门——线程 (二)
linux·嵌入式
写代码的学渣4 小时前
Linux systemd 开机启动日志逐行详细解析报告
linux·运维·服务器
田里的水稻4 小时前
EP_XML\JSON配置文件和YAML
xml·运维·人工智能·机器人·自动驾驶·json
阿成学长_Cain5 小时前
Linux telinit 命令详解:运行级别切换|关机重启|系统维护一站式掌握
linux·运维·前端·网络
QXWZ_IA5 小时前
油气储罐沉降监测用什么技术方案最好?千寻自动化监测+次声波泄漏方案
运维·科技·自动化·能源