首页 > 其他分享 >无涯教程-AWK - 基本语法

无涯教程-AWK - 基本语法

时间:2023-10-21 15:33:07浏览次数:33  
标签:选项 教程 -- 无涯 jerry awk file AWK

AWK易于使用,我们可以直接从命令行提供AWK命令,也可以以包含AWK命令的文本文件的形式提供AWK命令。

AWK命令行

我们可以在命令行的单引号内指定AWK命令,如下所示-

awk [options] file ...

考虑具有以下内容的文本文件 marks.txt -

1) Learnfk     Physics    80
2) Toolfk    Maths      90
3) Chromefk    Biology    87
4) Poemfk    English    85
5) Nesfk     History    89

让我们使用AWK显示文件的完整内容,如下所示-

[jerry]$awk '{print}' marks.txt 

在执行此代码时,您将获得以下输出-

1) Learnfk     Physics    80
2) Toolfk    Maths      90
3) Chromefk    Biology    87
4) Poemfk    English    85
5) Nesfk     History    89

AWK程序文件

我们可以在脚本文件中提供AWK命令,如下所示-

awk [options] -f file ....

首先,创建一个包含AWK命令的文本文件 command.awk ,如下所示-

{print}

现在,我们可以指示AWK从文本文件读取命令并执行操作,在这里,我们获得了与上述示例相同的输出。

[jerry]$awk -f command.awk marks.txt

在执行此代码时,您将获得以下输出-

1) Learnfk  Physics 80
2) Toolfk Maths   90
3) Chromefk Biology 87
4) Poemfk English 85
5) Nesfk  History 89

AWK选项

AWK支持可以从命令行提供的以下标准选项。

-v 选项

此选项将值分配给变量,它允许在程序执行之前进行赋值。

[jerry]$awk -v name=Learnfk 'BEGIN{printf "Name=%s\n", name}'

在执行此代码时,您将获得以下输出-

Name=Learnfk

--dump-variables [= file] 选项

它打印全局变量的排序列表及其最终值到文件中,默认文件是 awkvars.out 。

[jerry]$awk --dump-variables ''
[jerry]$cat awkvars.out 

执行上述代码后,您将获得以下输出-

ARGC: 1
ARGIND: 0
ARGV: array, 1 elements
BINMODE: 0
CONVFMT: "%.6g"
ERRNO: ""
FIELDWIDTHS: ""
FILENAME: ""
FNR: 0
FPAT: "[^[:space:]]+"
FS: " "
IGNORECASE: 0
LINT: 0
NF: 0
NR: 0
OFMT: "%.6g"
OFS: " "
ORS: "\n"
RLENGTH: 0
RS: "\n"
RSTART: 0
RT: ""
SUBSEP: "\034"
TEXTDOMAIN: "messages"

--help 选项

此选项在标准输出上打印帮助消息。

[jerry]$awk --help

在执行此代码时,您将获得以下输出-

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options : GNU long options: (standard)
   -f progfile                --file=progfile
   -F fs                      --field-separator=fs
   -v var=val                 --assign=var=val
Short options : GNU long options: (extensions)
   -b                         --characters-as-bytes
   -c                         --traditional
   -C                         --copyright
   -d[file]                   --dump-variables[=file]
   -e 'program-text'          --source='program-text'
   -E file                    --exec=file
   -g                         --gen-pot
   -h                         --help
   -L [fatal]                 --lint[=fatal]
   -n                         --non-decimal-data
   -N                         --use-lc-numeric
   -O                         --optimize
   -p[file]                   --profile[=file]
   -P                         --posix
   -r                         --re-interval
   -S                         --sandbox
   -t                         --lint-old
   -V                         --version

--lint [= fatal] 选项

提供自变量致命时,它将警告消息视为错误。

[jerry]$awk --lint '' /bin/ls

在执行此代码时,您将获得以下输出-

awk: cmd. line:1: warning: empty program text on command line
awk: cmd. line:1: warning: source file does not end in newline
awk: warning: no program text at all!

--posix 选项

此选项打开严格的POSIX兼容性,在该兼容性中,所有常见和gawk扩展都被禁用。

--profile [= file] 选项

此选项在文件中生成程序的漂亮打印版本,默认文件为 awkprof.out 。

[jerry]$awk --profile 'BEGIN{printf"---|Header|--\n"} {print} 
END{printf"---|Footer|---\n"}' marks.txt > /dev/null 
[jerry]$cat awkprof.out

在执行此代码时,您将获得以下输出-

# gawk profile, created Sun Oct 26 19:50:48 2014

   # BEGIN block(s)

   BEGIN {
      printf "---|Header|--\n"
   }

   # Rule(s) {
      print $0
   }

   # END block(s)

   END {
      printf "---|Footer|---\n"
   }

--traditional 选项

此选项禁用所有特定于gawk的扩展。

--version 选项

此选项显示AWK程序的版本信息。

[jerry]$awk --version

执行此代码后,将产生以下输出-

GNU Awk 4.0.1
Copyright (C) 1989, 1991-2012 Free Software Foundation.

参考链接

https://www.learnfk.com/awk/awk-basic-syntax.html

标签:选项,教程,--,无涯,jerry,awk,file,AWK
From: https://blog.51cto.com/u_14033984/7967619

相关文章

  • 无涯教程-AWK - 环境设置
    本章介绍如何在GNU/Linux系统上设置AWK环境。软件包安装通常,大多数GNU/Linux发行版默认都提供AWK,如果您没有AWK,请使用高级软件包工具(APT)软件包管理器将其安装在基于Debian的GNU/Linux[jeryy]$sudoapt-getupdate[jeryy]$sudoapt-getinstallgawk同样,要在基于RPM的GNU/L......
  • 无涯教程-AWK - 简介
    AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识。AWK提供了极其强大的功能:可以进行正则表......
  • 无涯教程-Arduino - Multi-Dimensional Arrays函数
    具有二维的数组(即下标)通常表示由以行和列排列的信息组成的值表。intb[2][2]={{1,2},{3,4}};这些值按大括号按行分组,因此,1和2分别初始化b[0][0]和b[0][1],而3和4分别初始化b[1][0]和b[1][1],如果给定行的初始化程序不足,则将该行的其余元素初始化为0。因此......
  • 无涯教程-Arduino - micros()函数
    micros()函数返回从Arduino开发板开始运行当前程序起的毫秒数,该数字溢出,即大约70分钟后恢复为零。micros-语法micros();此函数返回自程序启动以来的微秒数(无符号长)micros-示例unsignedlongtime;voidsetup(){Serial.begin(9600);}voidloop(){......
  • FreeRTOS入门教程(事件组概念和函数使用)
    (文章目录)前言本篇文章将带大家学习什么是事件组以及如何使用事件组。一、事件组概念事件组通常是由一组位(bits)组成的数据结构,其中每一位都对应着某个特定的事件。每个位可以被设置或清除,表示相应的事件发生或未发生。这种位的组合形成了一个类似于二进制数的集合,每个位都代......
  • 无涯教程-Arduino - delayMicroseconds()函数
    delayMicroseconds()函数接受一个整数(或数字)参数,该数字表示时间,以微秒为单位,一毫秒有一千微秒,一秒有一百万微秒。当前,可以产生准确延迟的最大值是16383,这可能会在将来的Arduino版本中改变,对于超过几千微秒的延迟,应改为使用delay()函数。delayMicroseconds-语法delayMicr......
  • 无涯教程-Arduino - for语句函数
    for循环执行语句预定次数。forloop-语法for(initialize;control;incrementordecrement){//语句块}forloop-示例for(counter=2;counter<=9;counter++){//statements块将执行10次}forloop-执行序列参考链接https://www.learnfk.com/arduin......
  • 无涯教程-Arduino - while语句函数
    while循环将连续且无限地循环,直到括号()中的表达式变为false为止,必须更改测试变量,否则while循环将永远不会退出。whileloop-while-语法while(expression){Blockofstatements;}whileloop-while-执行序列参考链接https://www.learnfk.com/arduino/arduino-w......
  • 无涯教程-Arduino - switch case语句函数
    与if语句类似,switch...case通过允许程序员指定应在各种条件下执行的不同代码来控制程序的流程,break关键字使switch语句退出,并且通常在每种情况下使用。switchcase-语法switch(variable){caselabel://statementsbreak;}caselabel:{//statemen......
  • python3.12安装pyqt6教程
    1.开发环境:win11,Pycharm2023.2.32.python版本:Python3.12.03.Installationpackage#python.exe-mpipinstall--upgradepip#pipinstallxlrd#pipinstallxlwt#pipinstallpyserial#pipinstallturtle==0.0.1下载2个包文件然后安装https://github.com/altendky......