Linux命令行与shell脚本编程大全笔记(gawk基础)

gawkawk程序的GNU版本,能够提供一个类编程环境来修改和重新组织文件中的数据
*定义变量保存数据
*使用算术和字符串操作符来处理数据
*使用结构化编程(if-then等)来为数据处理增加处理逻辑、
*通过提取数据文件中的数据元素,将其重新排列或格式化,生成格式化报告

gawk选项

选项描述
-F fs指定行中划分数据字段的字段分隔符
-f file从指定的文件中读取文件
-v var=value定义gawk程序中的一个变量及其默认值
-mf N指定要处理的数据文件中的最大字段数
-mr N指定数据文件中最大数据行数
-W keyword指定gawk的兼容模式或警告等级

*gawk程序脚本用一对花括号({})来定义
*由于gawk命令行假设脚本是单个文本字符串,还必须将脚本放入单引号

gawk '{print "hello world"}' 命令行上该命令没有指定文件,所以会从STDIN接受数据

gawk数据字段
$0 代表整个文本行
$1 代表文本行中第一个数据字段
$2 代表文本行中第二个数据字段
$n 代表文本行中第n个数据字段
gawk默认的字段分割符是空白字符(空格或者制表符)
gawk -F : '{print $1}' /etc/passwd 显示系统密码文件中的第一个字段

*gawk允许多条命令组合使用,但需要在命令之间加上分号(sed 需要加上 -e 选项)
echo "My name is haha" | gawk '{$4="hhhh"; print $0}' 给第四个变量命名后,打印整条语句

gawk将程序存储到文件中

cat script3.gawk # 程序名后缀一般标识为 .gawk
{
text="'s homne directory is "
print $1 text $2  #gawk在引用变量时不用美元$符号
}
# 调用
gawk -F : -f script3.gawk /etc/passwd

在处理数据前后运行脚本

echo "my name is ym" | gawk 'BEGIN {print "start"} {print $0} END {print "end"}' 

BEGIN 在处理数据前运行脚本
END 在处理数据后运行脚本

echo "my name is ym" | gawk 'BEGIN {print "start"; FS=":"} {print $0} END {print "end"}'

FS 特殊变量,定义字段分割符的另一个办法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值