美文网首页Linux积累
Linux 命令 & shell 脚本之11(gawk 程序)

Linux 命令 & shell 脚本之11(gawk 程序)

作者: 轻飘飘D | 来源:发表于2020-10-25 00:11 被阅读0次

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

gawk程序的基本格式如下:
gawk options program file

gawk选项

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

1.使用数据字段变量

。它会自动给一行中的每个数据元素分
配一个变量。默认情况下,gawk会将如下变量分配给它在文本行中发现的数据字段:
 $0代表整个文本行;
 $1代表文本行中的第1个数据字段;
 $2代表文本行中的第2个数据字段;
 $n代表文本行中的第n个数据字段。
在文本行中,每个数据字段都是通过字段分隔符划分的。gawk在读取一行文本时,
会用预定义的字段分隔符划分每个数据字段。gawk中默认的字段分隔符是任意的空白字符(例如空格或制表符)。

[root@MYSQL8 myshell]# cat data2.txt 
One line of test text.
Two lines of test text.
Three lines of test text.

[root@MYSQL8 myshell]# gawk '{print $1}' data2.txt
One
Two
Three

[root@MYSQL8 myshell]# cat data3.txt
UserName,,Age,,Sex
xag,,42,,M
yyc,,37,,F
xrj,,12,,F
xrx,,01,,F
要读取采用了其他字段分隔符的文件,可以用-F选项指定 ($2 : 每行的第2个字段)
[root@MYSQL8 myshell]# gawk -F,, '{print $2}' data3.txt
Age
42
37
12
01

[root@MYSQL8 myshell]# gawk -F',,' '{print $2}' data3.txt
Age
42
37
12
01

2.在程序脚本中使用多个命令

[root@MYSQL8 myshell]# echo "My name is xag" | gawk '{$4="xuaiguo"; print $0}'
My name is xuaiguo
第一条命令会将 “My name is xag” 串中 字段变量$4=xag 重新赋值xuaiguo。第二条命令会打印整个数据字段。

3.从文件中读取程序

[root@MYSQL8 myshell]# cat script2.gawk
{
 text = "'s age is "
 print $1 text $2
}
注意,gawk程序在引用变量值时并未像shell脚本一样使用美元符

[root@MYSQL8 myshell]# gawk -F',,' -f script2.gawk data3.txt
UserName's age is Age
xag's age is 42
yyc's age is 37
xrj's age is 12
xrx's age is 01
BEGIN脚本创建了标题 (在处理数据前运行脚本)
END脚本生成页脚 (在处理数据后运行脚本)

[root@MYSQL8 myshell]# cat script3.gawk
BEGIN {
print "The latest list of users and shells"
print " Name \t Age"
print "----- \t ---"
FS=",,"
}
{
print $1 " \t " $2
}

END {
print "This concludes the listing"
}

[root@MYSQL8 myshell]# gawk -f script3.gawk data3.txt
The latest list of users and shells
 Name    Age
-----    ---
UserName     Age
xag      42
yyc      37
xrj      12
xrx      01

相关文章

  • Linux 命令 & shell 脚本之11(gawk 程序)

    在gawk编程语言中,你可以做下面的事情: 定义变量来保存数据; 使用算术和字符串操作符来处理数据; 使用结...

  • [Linux]Shell

    shell:命令解释器,驱动linux内核;应用程序调用shell命令 1.Shell脚本的执行方式 脚本格式要求...

  • linux学习笔记-09shell脚本

    shell脚本 Shell脚本是将各种命令通过逻辑语句组合而成的程序 脚本每行写一条Linux命令。并且一个完整的...

  • gawk 相关总结

    一. gawk 基础 gawk 程序脚本用一对花括号来定义,必须将命令放到两个花括号中。由于 gawk 命令行假定...

  • shell脚本基础

    shell介绍 shell命令: 在linux终端能被解析的命令,就是shell命令。 shell脚本: 多个sh...

  • 17. Interview-Linux

    1 用过哪些Linux命令? 2 写过shell脚本吗?shell脚本基本格式? 3 Linux I/O读写方式 ...

  • 自动化脚本实践(Shell + Expect)

    Linux Shell脚本入门: Linux awk 命令 | 菜鸟教程 Shell 教程 | 菜鸟教程 lin...

  • Fabric01-1

    一:shell脚本基础 1.shell命令 : 在linux终端能够被解析出来的命令2.shell脚本 : 多个s...

  • Linux shell编程模板

    只要会写Linux命令,就可以写shell脚本。 之前基本上写的shell脚本都是Linux命令的组合,最多加入i...

  • Linux下的shell

    Shell 和 Linux shell程序是包含若干行shell或linux命令的文件。linux命令语句只能一行...

网友评论

    本文标题:Linux 命令 & shell 脚本之11(gawk 程序)

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