awk命令行参数

直接举个例子来说明

<code lang="powershell">

$ cat datafile

northwest  NW  Joel Craig     3.0   .98   3  
 4

western    WE  Sharon Kelly   5.3   .97   5  
 23

southwest  SW  Chris Foster   2.7   .8    2  
 18

southern   SO  May Chin       5.1   .95   4  
 15

southeast  SE  Derek Johnson  4.0   .7    4  
 17

eastern    EA  Suan Beal      4.4   .84   5  
 20

northeast  NE  TJ Nichols     5.1   .94   3  
 13

north      NO  Val Shultz     4.5   .89   5  
 9

central    CT  Sheri Watson   5.7   .94   5  
 13

$ cat argvs.sc

# Testing command-line arguments with ARGV and ARGC using a for 1oop.

BEGIN{

for(i=0;
i<ARGC; i++){

printf("argv[%d]
is %s\n",i , ARGV[i]}

printf ("The
number of arguments, ARGC=%d\n",ARGC)

}

}

$ awk -f argvs.sc datafile

argv[O] is
nawk

argv[l] is
datafile

The number of arguments, ARGC=2

说明:BEGIN块中包含一个for循环,用于处理命令行参数。ARGC是参数的个数,
ARGV则是包含实际参数的数组。nawk不把选项当成参数。这个例子中的有效参数只有nawk命令和输入文件也datafile。

范例

$ awk ‘BEGIN{name=ARGV[1]};\

$0 ~ name {print $3, $4}‘ "Derek" datafile

awk: can t open Derek

source line number 1

$ awk ‘BEGIN {name=ARGV[1]; delete ARGV[1] };\

$0 ~ name {print $3, $4}‘ "Derek" datafile

Derek Johnson

说明

1.在BEGIN块中,名字"Derek"被赋给变量name。接下来的模式操作块中,awk试着将"Derek"作为输入文件打开,结果失败了。

2. 把"Derek"赋给变量name后,awk就把ARGV[1]删除了。进入模式操作块时,awk没有尝试将"Derek"作为输入文件打开,而是打开了文件datafile。

参考文章:http://www.linuxawk.com/jiaocheng/361.html

时间: 2024-11-03 21:43:50

awk命令行参数的相关文章

awk处理命令行参数

ARGV awk可以从内置数组ARGV中得到命令行参数,其中包括命令awk.但所有传递给awk的选项都不在其中.ARGV数组的下标从0开始. ARGC ARGC是一个包含命令行参数个数的内置变量. 范例 $ cat argvs # Scriptname:argvs BEGIN{ for(i=0; i<ARGC; i++){ printf("argv[%d] is %s\n",i,ARGV[i]) } printf("The number of arguments, AR

awk,perl,python的命令行参数处理

Python,Perl,Bash命令行参数 Part I 日常经常性的和Perl,Python,Bash打交道,但是又经常性的搞混他们之间,在命令行上的特殊性和index的区别,Python真的是人性化到家了,但是命令行上就很原始,但是很有分类感.还是会喜欢Perl一点(至少还可以动脑子,不至于生锈),感觉Perl是个杂合子,而python像胡彦斌,bash像韩红(最近看我是歌手第三季,嘻嘻).Bash就是家常菜了,虽然Perl可以大部分代替Bash的功能,像grep sort map等,但是某

python 命令行参数sys.argv

python中命令行参数和shell不一样,是通过sys.argv[]来获取的,sys.argv[0]是代码文件本身的路径,因此参数是从1开始的, 例子: #!/usr/bin/env python import os import json import os, sys #t=os.popen("""netstat -natp|awk -F: '/redis-server/&&/LISTEN/{print $2}'|awk '{print $1}' &quo

如何编写一个带命令行参数的Python文件

看到别人执行一个支持命令行参数的python文件,瞬间觉得高大上起来.牛逼起来,那么如何编写一个带命令行参数的python脚本呢?不用紧张,下面将简单易懂地让你学会如何让自己的python脚本,支持命令行参数. 首先你要知道python中的sys模块的一些功能: import sys print "the number of python program's argument:",len(sys.argv) print "the value of every argument

main 函数argc , argv 主命令行参数

ARGc和ARGv中的ARG指的是"参数"(ARGuments, argument counter 和 argument vector ) 至少有两个参数至主函数:ARGc和ARGv: 首先是一个至算提供的参数到程序, 第二个是对字符串数组的指针. 基本作用: argc, argv 用命令行编译程序时有用. 主函数main中变量(int argc, char *argv[ ])的含义 有些编译器允许将main()的返回类型声明为void,这已不再是合法的C++; main(int ar

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数] 较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参数.环境变量和物理文件作为原始配置数据的来源,如果采用物理文件作为配置源,我们可以选择不同的格式(比如XML.JSON和INI等) .如果这些默认支持的配置源形式还不能满足你的需求,我们还可以通过注册自定义ConfigurationSour

C命令行参数

总是忘了,在这里说明下. argc是命令行参数的实际个数,从1开始. 第一个是可执行文件的名称 argv[]的元素是字符串 每个元素是个命令行参数. #include<stdio.h> int main(int argc,char *argv[]){ printf("argc is %d\n",argc); int i=0; for(;i<=argc;i++){ printf("argv[%d] is %s\n",i,argv[i]); } }

mysql命令行参数

一,mysql命令行参数 Usage: mysql [OPTIONS] [database] //命令方式 -?, --help //显示帮助信息并退出 -I, --help //显示帮助信息并退出 --auto-rehash //自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子 -A, --no-auto-rehash //默认状态是没有自动补全功能的.-A就是不要自动补全功能 -B, --batch //ysql不使用历史文件,禁用交互 (Enables --silent

命令行参数相加问题

一,设计思想 因为命令行参数是字符串类型,所以需要进行转换.可以把每个命令行参数,依据字符串长度使用循环结构把每个字符串转换成double型,最后加和. 二,程序流程图 三,源程序代码和结果截图 public class  ComSum { public static void main(String[] args) { double sum=0; for(int i=0;i<args.length;i++) { double len; len=Integer.parseInt(args[i])