文件自定义变量_awk 内置变量与自定义变量
点击上方“生信科技爱好者”,马上关注真爱,请置顶或星标
作者:ghostwu
原文:https://www.cnblogs.com/ghostwu/p/9085653.html
AWK 中,变量分为两种:内置变量与自定义变量。
内置变量
常见的内置变量有:
FS
:输入字段分隔符, 默认为空白字符;OFS
:输出字段分隔符, 默认为空白字符;RS
:输入记录分隔符(输入换行符), 指定输入时的换行符;ORS
:输出记录分隔符(输出换行符),输出时用指定符号代替换行符;NF
:number of Field,当前行的字段的个数(即当前行被分割成了几列),字段数量;NR
:行号,当前处理的文本行的行号;FNR
:各文件分别计数的行号;FILENAME
:当前文件名;ARGC
:命令行参数的个数;ARGV
:数组,保存的是命令行所给定的各参数。
1. NF 打印字段数
下面的 NF 打印出每行有多少列。
$ awk '{print NF}' ghostwu.txt 2$ cat ghostwu.txt ghostwuzhangsan 22lisi 23 woman
2. 引用 NF 变量
引用 NF 变量,需要用美元符号。
$ cat ghostwu.txt ghostwu 20 manzhangsan 22 womanlisi 23 woman$ awk '{print $NF}' ghostwu.txt manwomanwoman$ awk '{print $(NF-2), $(NF-1), $(NF)}' ghostwu.txt ghostwu 20 manzhangsan 22 womanlisi 23 woman
3. NR 打印行号
使用 NR 打印每一行的行号:
$ awk '{print NR,$0}' ghostwu.txt 1 ghostwu 20 man2 zhangsan 22 woman3 lisi 23 woman
4. NR 与 FNR
awk 支持多文件扫描,如果采用 NR,下一个文件的行序号会接着上一个文件;如果使用 FNR,就会单独统计。
$ awk '{print NR, $0}' ghostwu.txt ghostwu.bak ghostwu 20 manzhangsan 22 womanlisi 23 womanghostwu 20 manzhangsan 22 womanlisi 23 woman$ awk '{print FNR, $0}' ghostwu.txt ghostwu.bak ghostwu 20 manzhangsan 22 womanlisi 23 womanghostwu 20 manzhangsan 22 womanlisi 23 woman
5. RS 指定行分隔符
RS 指定行输入符,默认为回车换行,如果我们想让它以空格作为行输入符( 即,遇到空格就换行 ),当我们指定使用空格作为"行分隔符"时,在 awk 解析文本时,每当遇到空格,awk 就认为遇到的空格是换行符,于是 awk 就将文本换行了。
$ awk '{print NR, $0}' ghostwu.txt ghostwu 20 manzhangsan 22 womanlisi 23 woman$ awk -v RS=" " '{print NR, $0}' ghostwu.txtghostwu20manzhangsan22womanlisi23woman
6. ORS 指定输出行分隔符
ghostwu@dev:~/linux/awk$ awk -v ORS='---->' '{print $0}' ghostwu.txt
ghostwu 20 man---->zhangsan 22 woman---->lisi 23 woman---->ghostwu@dev:~/linux/awk$
7. 同时指定输入,输出行分隔符
$ awk -v RS=" " -v ORS='->' '{print $0}' ghostwu.txt
ghostwu->20->man
zhangsan->22->woman
lisi->23->woman
8. 使用 FILENAME 打印文件名称
$ awk '{print FILENAME, NR, $0}' ghostwu.txt ghostwu.bak
ghostwu.txt 1 ghostwu 20 man
ghostwu.txt 2 zhangsan 22 woman
ghostwu.txt 3 lisi 23 woman
ghostwu.bak 4 ghostwu 20 man
ghostwu.bak 5 zhangsan 22 woman
ghostwu.bak 6 lisi 23 woman
9. ARGV 保存命令行参数的数组
ARGV 保存命令行参数的数组,'pattern{action}'
并不被看做参数。
$ awk '{print ARGV[0], ARGV[1], ARGV[2]}' ghostwu.txt awk ghostwu.txt awk ghostwu.txt awk ghostwu.txt
10. ARGC 保存命令行参数个数
使用 ARGC 可以保存命令行参数的个数,下例中ARGV[1]
没有值,因为命令行没有给第三个参数。
$ awk '{print ARGV[0], ARGV[1], ARGV[2], ARGC}' ghostwu.txt awk ghostwu.txt 2awk ghostwu.txt 2awk ghostwu.txt 2
自定义变量
awk 常见的用户自己定义的变量,有两种形式:通过 -v 变量名的形式,和在 program 中直接定义。
1. -v varname=value
使用-v varname=value
的形式自定义变量时, 变量名区分字符大小写。
$ awk -v my_name="hello world" 'BEGIN{print my_name}'hello world
2. 在 program 中直接定义变量
在 program 中直接定义变量时,以下定义了3个自定义变量,其实形式像编程语言一样,定义的时候用分号。打印变量跟之前一样,用逗号隔开,注意,不需要用美元符号。
$ awk 'BEGIN{ my_name="zhangsan"; my_age=22; my_sex="男"; print my_name, my_age, my_sex}'zhangsan 22 男
3. 引用命令行定义的变量
除了 1、2 的自定义变量方式外,我们也可以引用命令行定义的变量。
$ echo $myvar
$ myvar="我在命令行定义的变量"$ awk -v var1=$myvar 'BEGIN{print var1}'我在命令行定义的变量
—END—
声明:本公众号所有转载的文章仅用于参考学习使用,文章包括文字与图片在内的著作权属于原作者所有,禁止用于商用。文章任何形式的转载请联系原作者获得授权。
戳原文,更有料!
文件自定义变量_awk 内置变量与自定义变量相关推荐
- nginx proxy_pass 使用变量报错_nginx自定义变量与内置预定义变量
nginx可以使用变量简化配置与提高配置的灵活性,所有的变量值都可以通过这种方式引用: $变量名 而nginx中的变量分为两种,自定义变量与内置预定义变量 内置变量 声明 可以在sever,http, ...
- 如何查看python有哪些内置函数_如何查看 Python 全部内置变量和内置函数?
查看python内置函数的方法:1.打开Python IDLE编辑器:2.输入" dir(__builtins__)"命令,按下回车键(Enter)得到Python全部内置变量和函 ...
- python不允许使用关键字作为变量名、允许使用内置函数_【判断题】Python不允许使用关键字作为变量名,但是允许使用内置函数名作为变量名,不过这会改变函数名的含义,所以不建议这样做...
[判断题]Python不允许使用关键字作为变量名,但是允许使用内置函数名作为变量名,不过这会改变函数名的含义,所以不建议这样做 更多相关问题 [单选,A2型题,A1/A2型题] <十四经发挥&g ...
- python不允许使用关键字作为变量名、允许使用内置函数_Python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数名的含义。...
Python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数名的含义. 答:对 对于检查出的无效MAC帧,以太网负责重传. 答:× 哪一年开始中国成为世界第二大经济体? 答:2 ...
- python 内置函数 builtins_如何查看 Python 全部内置变量和内置函数?
查看python内置函数的方法:1.打开Python IDLE编辑器:2.输入" dir(__builtins__)"命令,按下回车键(Enter)得到Python全部内置变量和函 ...
- 内置函数、自定义函数
编程语言的函数都可以分为两类:内置函数和自定义函数. 内置函数分为 数字相关的内置函数 # abs(x) 求绝对值print(abs(-10)) #10 """ divm ...
- 【 js基础 Day4】面向过程,面向对象,自定义对象,内置对象
01 复习 函数:把一些重复的代码封装在一个地方,在需要的时候直接调用这个地方的代码就可以了 函数作用:代码重用 函数的参数: 1.形参:函数定义的时候,函数名字后面的小括号里的变量 2.实参:函数调 ...
- JavaScript 的自定义对象 、内置对象、 浏览器对象(window对象以及子对象)、Dom对象
JS 中的 Object从本质上看,Object 是一个构造函数,用于创建对象. console.dir(Object); //ƒ Object() var obj = new Object(1); ...
- java 多重注解_Java注解-元数据、注解分类、内置注解和自定义注解
大家好,我是乐字节的小乐,上次说过了Java多态的6大特性|乐字节,接下来我们来看看Java编程里的注解. Java注解有以下几个知识点:元数据 注解的分类 内置注解 自定义注解 注解处理器 Serv ...
最新文章
- 见到了“公司”定义一个Company类,那么见到了“字段”是不是也可定义一个Column类?...
- kafka集群broker频繁挂掉问题解决方案
- 【知识必备】浅淡MVP在Android项目中的实战演习,让代码结构更简单~
- 修改RAC VIP IP
- Linux下MPlayer的安装
- 计算2的幂(信息学奥赛一本通-T1037)
- 剑破冰山—Oracle开发艺术 内容简介
- mac 二进制安装mysql_在mac下安装mysql二进制分发版的方法(不是dmg的)
- 删除下拉框只找23火星软件_下拉推广选择23火星软件
- pandas —— pd.read_csv 与df.to_csv
- SVN问号图标清除方法
- python不好找工作怎么办信用卡_利用python进行信用卡欺诈检测
- 《增长黑客》:针对产品增长---思维导图
- 国庆节,企查查我来啦~
- QQ “安全检查未通过,禁止下载该文件” 解决方法
- 【Opencv小项目 1】Opencv实现简单颜色识别
- Agv、Rgv 车辆控制调度系统开发知识点篇
- Mac下安装与使用Medis
- ubuntu 开机黑屏解决办法
- 解决单行文本省略号显示问题