文本三剑客之Awk

Awk是一个功能强大的编辑工具,用于在Linux/UNIX下对文本和数据进行处理。数据可以来自一个或多个文件,也可以为其他命令的输出,常作为脚本来使用。在执行操作时,awk逐行读取文本,默认以空格为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,对比该行是否与给定的模式相匹配,并按模式或者条件执行编辑命令,也可以从脚本中调用编辑指令过滤输出相应内容。

1.Awk的语法结构

awk [选项] '模式或条件 {编辑指令}' 文件1 文件2
        awk -f 脚本文件 文件1 文件2

在 Awk语句中,模式部分决定何时对数据进行操作,若省略则后续动作时刻保持执行状态,模式可以为条件语句、复合语句或正则表达式等。每条编辑指令可以包含多条语句,多条语句之间要使用分号或者空格分隔的多个{}区域。常用选项-F定义字段分隔符,默认以空格或者制表符作为分隔符。

2.awk常见的内建变量(可直接使用)

变量

描述

FS

指定每行文本的字段分隔符,默认为空格或制表位。

NF

当前处理的行的字段个数。

NR

当前处理的行的行号(序数)

$0

当前处理的行的整行内容。

$n

当前处理行的第n个字段(第n列)。

在Awk中,缺省的情况下总是将文本文件中的一行视为一个记录,而将一行中的某一部分作为记录中的一个字段。为了操作这些不同的字段,Awk借用Sed的方法,用1,2,3,4......这样的方法来顺序的表示行中的不同字段。

3.用法示例

以冒号:为分隔符,搜索pwd.txt 有root关键字的行中的第七列。

[root@localhost ]# awk -F: '/root/ {print $7}' pwd.txt  /bin/bash
/sbin/nologin

搜索pwd.txt 有root关键字的所有行

[root@localhost ]# awk '/root/' pwd.txt 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

查找带有指定字符串的行

grep "/sbin/nologin"pwd.txt 
awk '/\/sbin\/nologin/{print $0}'pwd.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值