python——awk命令(1)

原文链接:http://www.zsythink.net/archives/1374

awk是一个报告生成器,拥有强大的文本格式化的能力。可以把报告理解成“报表”或“表格”。利用awk的“文本格式化能力”将一些文本整理成我们想要的样子。

awk基本语法:awk [options] 'Pattern{Action}' file

从字面上理解 ,action指的就是动作,awk擅长文本格式化,并且将格式化以后的文本输出,所以awk最常用的动作就是print和printf,因为awk要把格式化完成后的文本输出啊,所以,这两个动作最常用。

$0 表示显示整行 ,$NF表示当前行分割后的最后一列($0和$NF均为内置变量)

还可以添加字段,与文件中的列结合起来,如下图

AWK包含俩种特殊的模式:BEGIN 和 END。

BEGIN:指定处理文本之前需执行的操作。

END:指定处理完所有行之后需要执行的操作。

输入分隔符

输入分隔符比较容易理解,当awk逐行处理文本的时候,以输入分隔符为准,将文本切成多个片段,默认使用空格,但是,如果一段文字中没有空格,我们可以指定以特定的文字或符号作为输入分割符,比如下图中的例子,我们指定使用"#"作为输入分隔符。

使用 -F# 分割

除了使用-F选项指定的输入分隔符,还可以设置内部变量的方式,指定awk输入分隔符:-v FS='#'

输出分隔符

awk默认的输出分隔符是空格,但也可以通过内置变量OFS设置输出分隔符,-v OFS="+++"

awk变量

FS:输入字段分隔符, 默认为空白字符

OFS:输出字段分隔符, 默认为空白字符

NF:number of Field,当前行的字段的个数(即当前行被分割成了几列),字段数量

NR:行号,当前处理的文本行的行号。

awk处理多个文件的时候,如果使用NR显示行号,那么,多个文件的所有行会按照顺序进行排序。

FNR:各文件分别计数的行号

想要分别显示两个文件的行号,该怎么办呢,这个时候就会用到内置变量FNR,效果如下。

RS:输入记录分隔符(输入换行符), 指定输入时的换行符

让awk以为每次遇到一个空格就是新的一行。那么我们该怎么做呢?示例如下

ORS:输出记录分隔符(输出换行符),输出时用指定符号代替换行符

FILENAME:显示当前文件名

ARGC:命令行参数的个数

ARGV:数组,保存的是命令行所给定的各参数

自定义变量

方法1:-v varname=value 变量名区分大小写

方法2:在program 中直接定义,但注意,变量定义和动作之间需要 “;” 分割

还可以使用下面方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值