awk参数处理

awk使用ARGC和ARGV来在命令行中传入一些变量到awk脚本中。其中:

  • ARGC包含传入awk脚本的参数的总数目
  • ARGV为一个包含所有传入awk脚本的参数的数组,该数组下标从0到ARGC-1。
  • 当你传入5个参数,ARGC的值为6
  • ARGV[0]总是"awk"

下面简单的一个例子展示了ARGC和ARGV怎么工作的:

[email protected]:~/bash/awk$ cat arguments.awk
BEGIN {
    print "ARGC=", ARGC
    for(i=0;i<ARGC;i++)
        print ARGV[i]
}
[email protected]:~/bash/awk$ awk -f arguments.awk arg1 arg2
ARGC= 3
awk
arg1
arg2

在gawk中,当前正在处理的文件是存储在ARGV数组中,该数组可在循环块中被访问。ARGIND是访问ARGV数组的下标去检索当前文件。当你在awk脚本中仅仅处理一个文件时,ARGIND的值为1,并且ARGV[ARGIND]会返回当前正在处理的文件名。

下面这个例子只包含一个块,那就是打印ARGIND的值,以及得到当前文件名从ARGV[ARGIND]

{
    print "ARGIND:", ARGIND
    print "Current file:", ARGV[ARGIND]
}
[email protected]:~/bash/awk$ awk -f argind.awk  num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt

其中num.txt的内容为:

[email protected]:~/bash/awk$ cat num.txt
1
2
3
4
5

如果传入不是一个文件,而是两个文件,则输出结果为:

[email protected]:~/bash/awk$ awk -f argind.awk  num.txt num2.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 1
Current file: num.txt
ARGIND: 2
Current file: num2.txt
ARGIND: 2
Current file: num2.txt

num2.txt的内容为:

[email protected]:~/bash/awk$ cat num2.txt
1
2
时间: 2024-11-09 03:15:52

awk参数处理的相关文章

awk 变量

awk 变量 1,-F 指明输入时用到的字段分隔符 awk -F: '{print $1}'/etc/passwd 使用冒号作为分隔符,打印passwd的第一行 2,使用print打印字符串 awk -F: '{print "hello,awk"}' /etc/passwd 注意:passwd文件有多少行,就打印多少行hello,awkhello,awk 的双引号不能去掉,用作表示hello,awk是字符串大括号外面使用单引号 awk -F: '{print "hello,a

正则与sed,grep,awk三剑客

系统登录顺序: /etc/profile /etc/profile.d/a.sh (a.sh自己建的) /root/.bash_profile /root/.bashrc /etc/bashrc /bin/bash 提供命令解释器(终端) 直接打/bin/bash 非登录shell /root/.bashrc /etc/bashrc /etc/profile.d/a 可将别名alias等写入以上三个文件 正则表达式: grep -n  只显示行号 -o 只显示匹配内容 -q  安静模式,不打印

awk应用

awk在CentOS操作系统中是一个软链接,链接到gawk程序上的.awk主要是对文件的行进行操作,将一行按照指定的方式进行切割. 一.awk工作机制 awk在处理文本流时,每一次会读取文本流中的一行并对这一行按指定的分隔符进行分隔,分隔后可以对每一个字段进行处理,其中输入的分隔符可以和输出的分隔符不一样,这些都是通过awk内置的变量来处理的. 二.awk命令运用 格式:awk [OPTIONS] 'program' FILE1 FILE2 ... 2.1 print 用法:print item

awk语法

awk是一个非常棒的数字处理工具.相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分为数个“字段”来处理.运行效率高,而且代码简单,对格式化的文本处理能力超强.先来一个例子: 文件a,统计文件a的第一列中是浮点数的行的浮点数的平均值.用awk来实现只需要一句话就可以搞定 $cat a 1.021 33 1#.ll 44 2.53 6 ss 7 awk 'BEGIN{total = 0;len = 0} {if($1~/^[0-9]+\.[0-9]*/){total += $1; le

AWK基础讲解笔记

目录 awk课程总结... 1 第1章 awk基础入门... 1 1.1 awk基础入门... 1 1.2 awk简介... 1 1.2.1 一种名字怪异的语言... 1 1.2.2 模式扫描和处理... 1 1.3 学过awk可以掌握的内容... 1 1.4 awk命令... 1 1.5模式及pattern,可以类似理解成sed的模式匹配,可以由表达式组成,也可以是俩个正斜杠之间的正则表达式,比如:NR==1 ,这就是模式,可以理解为一个条件.... 2 1.6动作即action,是由在大括号

Awk报告生成器

一.awk概念以及使用格式 Awk是一个强大的报告生成器,awk自身具有遍历的功能,支持条件循环,就是一个编程语言,awk 的输出  1.print命令 后接各项目使用逗号分割,而输出时则使用输出符分割.2.输出是个字符串或数值,当记录的字段.变量或awk的表达式:数值会被隐式转换为字符串后输出.3.print后面如果省略相当于$0 输出空白print"".4.显示当前系统上.如果print后接选项没有逗号只有空格输出的结果连载一起{print $1 $7} 1.Awk 的变量分为内置

Linux文本处理必杀技之awk应用详解

AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一.这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯.彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识.awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源(ls -l /bin/awk) awk是一款强大的报告日志生成处理工具,不同于sed和grep,它的侧重点是如何把文本信息更好的展

AWK从入门到精通

第1章 awk基础入门 要弄懂awk程序,必须熟悉了解这个工具的规则, 1.2 awk简介 1.2.1 一种名字怪异的语言 1.2.2 模式扫描和处理 awk不仅仅是Linux中的一个命令,而且是一种编程语言,可以用来处理数据和生成报告,处理的数据可以是一个或者多个文件,可以是来自标准输入,也可以是通过管道获取标准输入,awk可以在命令行上直接编辑命令进行操作,也可以编写成awk程序来进行运用,本章主要讲解awk命令行的运用,较为复杂的程序会包含在以后的课程中 回顾sed命令,把文件当做流水一样

linux中grep、sed、awk使用简介

linux文件操作命令介绍1)grepgrep 用于在文件中查找符合条件的记录grep 参数 过滤条件 文件过滤的条件中可使用正则表达式-c 显示符合的行数-i 忽略大小写-n 显示符合要求的记录,包含行号-v 显示不符合要求的记录-A n 显示符合要求的记录,及下面的n行-B n 显示符合要求的记录,及上面的n行-C n 显示符合要求的记录,及上面和下面各n行 例如:grep -n 'perl' yum.log-20160823 2)sedsed 用于查询符合条件的文件并输出到屏幕或将查询结果