美文网首页
【Linux shell学习笔记-11-gawk基础】

【Linux shell学习笔记-11-gawk基础】

作者: 西布鲁克 | 来源:发表于2021-05-07 22:35 被阅读0次

gawk程序是Unix中的原始awk程序的GNU版本,它能提供一个类编程环境来修改和重新组织文件,完成诸如从文本文件中提取数据、生成报告等任务。

在gawk中我们可以做下面的事情:

  • 定义变量来保存数据;
  • 使用算术和字符串操作符来处理数据;
  • 使用结构化编程概念(比如if-then语句和循环)来为数据处理增加处理逻辑;
  • 通过提取数据文件中的数据元素,将其重新排列或格式化,生成格式化报告;

gawk命令格式

gawk <options> <program file>

gawk options 选项:

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

从命令行读取脚本

gawk '{print "Hello World!"}'

This is a test
Hello World!
hello

上面的命令行程序并没有指定文件名,所以gawk程序会从STDIN接收数据,它会等待从STDIN输入之后才会执行print,输入完毕后gawk程序会等待EOF(ctrl+D)字符终止程序的执行

使用数据字段变量
可以使用-F选项来指定分隔符将一个文本行分隔成若干数据字段(默认空格)

  • $0代表整个文本行;
  • $1代表文本行中的第1个数据字段;
  • $2代表文本行中的第2个数据字段;
  • $n代表文本行中的第n个数据字段;
  • $NF代表文本行中的最后一个数据字段
    打印"/etc/passwd"文件中的第1个字段,即用户名
gawk -F: '{print $1}' /etc/passwd

root
bin
daemon
adm
lp
sync
shutdown
halt
mail

在脚本程序中使用多个命令
在gawk编程中,允许将多个命令组成一个功能更多的程序,只需要在每个命令后面添加分号(;)即可。

echo "My name is Rich" | gawk '{$4="Christine"; print $0}'

My name is Christine

也可以用次提示符一次一行地输入程序脚本命令。

 gawk '{
> $4="Christine"
> print $0}'
My name is Rich

My name is Christine

在文件中读取程序
使用-f选项指定程序文件,程序文件中包含了需要执行的gawk程序代码

cat script2.gawk
{print $1 "'s home directory is " $6}

gawk -F: -f script2.gawk /etc/passwd

root's home directory is /root
bin's home directory is /bin
daemon's home directory is /sbin
adm's home directory is /var/adm
lp's home directory is /var/spool/lpd

在处理数据前后运行脚本
使用关键字'BEGIN'在处理数据前运行脚本

gawk 'BEGIN {print "The data3 File Contents:"} 
> {print $0}' data3.txt

The data3 File Contents:
Line 1
Line 2
Line 3

使用关键字'END'在处理数据前运行脚本

gawk 'BEGIN {print "The data3 File Contents:"} 
> {print $0}
> END {print "End of File"}' data3.txt

The data3 File Contents:
Line 1
Line 2
Line 3
End of File

相关文章

  • 【Linux shell学习笔记-11-gawk基础】

    gawk程序是Unix中的原始awk程序的GNU版本,它能提供一个类编程环境来修改和重新组织文件,完成诸如从文本文...

  • Linux基础学习笔记2 Shell

    Linux基础学习笔记2 Shell 本文发布于博客frankwtq 这是Linux基础学习笔记的第二部分,主要介...

  • shell基础

    Linux学习 一、shell介绍 Linux shell基础 什么是shell shell是一个命令解释器,提供...

  • linux shell脚本学习笔记(1)

    Linux的shell脚本是linux的入门基础课程,难度系数也不大,这里做一个学习笔记 ◆1.1 语法基本介绍 ...

  • linux shell脚本攻略笔记

    LINUX SHELL脚本攻略笔记[速查] linux shell脚本攻略笔记

  • Shell学习笔记-Linux基础

    学习Shell的同时,我们先来简单的认识一下操作系统。 一 从认识操作系统开始 1.1 操作系统简介 我通过以下四...

  • Linux Shell学习笔记

    Linux Shell学习笔记 基本信息 系统:Debian 9.5 发行信息:Debian GNU/Linux ...

  • Shell 学习笔记

    Shell 学习笔记 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是...

  • Shell学习

    Linux Shell基础教程 (一) (二) Linux Shell简明教程(推荐) (一) (二) Linux...

  • Linux学习笔记(三、Shell基础)

    一、Shell概述 1. Shell是什么? Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送...

网友评论

      本文标题:【Linux shell学习笔记-11-gawk基础】

      本文链接:https://www.haomeiwen.com/subject/pgwrdltx.html