Linux常用基本命令:三剑客命令之-awk内置变量与自定义变量
AWK中,变量分为两种:内置变量与自定义变量。
常见的内置变量有:
FS:输入字段分隔符, 默认为空白字符
OFS:输出字段分隔符, 默认为空白字符
RS:输入记录分隔符(输入换行符), 指定输入时的换行符
ORS:输出记录分隔符(输出换行符),输出时用指定符号代替换行符
NF:number of Field,当前行的字段的个数(即当前行被分割成了几列),字段数量
NR:行号,当前处理的文本行的行号。
FNR:各文件分别计数的行号
FILENAME:当前文件名
ARGC:命令行参数的个数
ARGV:数组,保存的是命令行所给定的各参数
下面的NF 打印出每行有多少列:
ghostwu@dev:~/linux/awk$ awk '{print NF}' ghostwu.txt
ghostwu@dev:~/linux/awk$ cat ghostwu.txt
ghostwu
zhangsan
lisi woman
引用NF变量,需要用美元符号
ghostwu@dev:~/linux/awk$ cat ghostwu.txt
ghostwu man
zhangsan woman
lisi woman
ghostwu@dev:~/linux/awk$ awk '{print $NF}' ghostwu.txt
man
woman
woman
ghostwu@dev:~/linux/awk$ awk '{print $(NF-2), $(NF-1), $(NF)}' ghostwu.txt
ghostwu man
zhangsan woman
lisi woman
NR:每一行的行号:
ghostwu@dev:~/linux/awk$ awk '{print NR,$0}' ghostwu.txt
ghostwu man
zhangsan woman
lisi woman
1,awk支持多文件扫描,如果采用NR, 下一个文件的行序号会接着上一个文件,FNR就会单独统计
ghostwu@dev:~/linux/awk$ awk '{print NR, $0}' ghostwu.txt ghostwu.bak
ghostwu man
zhangsan woman
lisi woman
ghostwu man
zhangsan woman
lisi woman
ghostwu@dev:~/linux/awk$ awk '{print FNR, $0}' ghostwu.txt ghostwu.bak
ghostwu man
zhangsan woman
lisi woman
ghostwu man
zhangsan woman
lisi woman
2,RS指定行输入符,默认为回车换行,如果我们想让他以空格作为行输入符( 即,遇到空格就换行 ),当我们指定使用空格作为"行分隔符"时,在awk解析文本时,每当遇到空格,awk就认为遇到的空格是换行符,于是awk就将文本换行了
ghostwu@dev:~/linux/awk$ awk '{print NR, $0}' ghostwu.txt
ghostwu man
zhangsan woman
lisi woman
ghostwu@dev:~/linux/awk$ awk -v RS=" " '{print NR, $0}' ghostwu.txt
ghostwu
man
zhangsan
woman
lisi
woman
3,ORS指定输出行分隔符
ghostwu@dev:~/linux/awk$ awk -v ORS='---->' '{print $0}' ghostwu.txt
ghostwu man---->zhangsan woman---->lisi woman---->ghostwu@dev:~/linux/awk$
4,可以同时指定,输入,输出行分隔符
ghostwu@dev:~/linux/awk$ awk -v RS=" " -v ORS='->' '{print $0}' ghostwu.txt
ghostwu->->man
zhangsan->->woman
lisi->->woman
5,FILENAME:文件名称
ghostwu@dev:~/linux/awk$ awk '{print FILENAME, NR, $0}' ghostwu.txt ghostwu.bak
ghostwu.txt ghostwu man
ghostwu.txt zhangsan woman
ghostwu.txt lisi woman
ghostwu.bak ghostwu man
ghostwu.bak zhangsan woman
ghostwu.bak lisi woman
6,ARGV保存命令行参数的数组,'pattern{action}'并不被看做参数
ghostwu@dev:~/linux/awk$ awk '{print ARGV[0], ARGV[1], ARGV[2]}' ghostwu.txt
awk ghostwu.txt
awk ghostwu.txt
awk ghostwu.txt
7,ARGC:命令行参数的个数,下例:ARGV[1]没有值,因为命令行没有给第三个参数
ghostwu@dev:~/linux/awk$ awk '{print ARGV[0], ARGV[1], ARGV[2], ARGC}' ghostwu.txt
awk ghostwu.txt
awk ghostwu.txt
awk ghostwu.txt
自定义变量:用户自己定义的变量,有两种形式
1,-v varname=value 变量名区分字符大小写
ghostwu@dev:~/linux/awk$ awk -v my_name="ghostwu" 'BEGIN{print my_name}'
ghostwu
2,在program中直接定义,以下定义了3个自定义变量,其实形式像编程语言一样,定义的时候用分号。打印变量跟之前一样,用逗号隔开,注意,不需要用美元符号.
ghostwu@dev:~/linux/awk$ awk 'BEGIN{ my_name="ghost"; my_age=22; my_sex="男"; print my_name, my_age, my_sex}'
ghost 男
3,也可以引用命令行定义的变量
ghostwu@dev:~/linux/awk$ echo $myvar ghostwu@dev:~/linux/awk$ myvar="我在命令行定义的变量"
ghostwu@dev:~/linux/awk$ awk -v var1=$myvar 'BEGIN{print var1}'
我在命令行定义的变量
Linux常用基本命令:三剑客命令之-awk内置变量与自定义变量的更多相关文章
- Linux常用基本命令:三剑客命令之-awk内置函数用法
awk的内置函数大致可以分类为算数函数.字符串函数.时间函数.其他函数等 算数函数 最常用的算数函数有rand函数.srand函数.int函数. 可以使用rand函数生成随机数,但是使用rand函数时 ...
- Linux常用基本命令:三剑客命令之-sed
sed是一个很强大的文件处理工具,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作 格式:sed [option] [command] [file] 常用命令: a ∶新 ...
- awk内置函数、外部变量
外部变量 ①获取外部变量 格式: awk '{action}' 变量名=变量值 ,这样传入变量可以在action中获得值. 示例: test='awk test'--day-5 外部变量 ①获取外部变 ...
- Linux基础教程 linux awk内置变量使用介绍
awk是个优秀文本处理工具,可以说是一门程序设计语言.下面是兄弟连Linux培训 给大家介绍的awk内置变量. 一.内置变量表 属性 说明 $0 当前记录(作为单个变量) $1~$n 当前记录的第n个 ...
- Linux 常用基本命令及应用技巧
需要pdf 版 联系我 我的文件中有目录一.Linux 的常用基本命令................................................................. ...
- Linux常用基本命令(less)
转: Linux常用基本命令(less) LESS:跟more命令的功能类似,都是用于分页显示内容,但是他的性能比more更高,功能比more更丰富,他读取文件是按需加载 格式: less [opti ...
- linux awk 内置函数详细介绍(实例)
这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y ...
- ## 本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘
本篇文章对linux常用的一些命令做一下总结,如有需要补充以及不懂得地方,请在下方留言 适合于linux初学者,以及对命令掌握不牢的用来备忘一,磁盘管理1.显示当前目录位置 pwd2.切换目录 cd ...
- linux awk 内置函数实例
awk内置函数,主要分4种:算数函数.字符串函数.时间函数.一般函数 一.算术函数 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y, x ) 返回 y/x ...
随机推荐
- Beta冲刺 (7/7)
Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1:(组长)柯奇豪 过去两天完成了哪些任务 部分代码的整合 编辑文章部分的完成 ...
- PowerBuilder常用字符串函数
http://blog.sina.com.cn/s/blog_5995b53d0100a694.html Fill()功能建立一个由指定字符串填充的指定长度的字符串.语法Fill ( chars, n ...
- 二叉搜索树的平衡--AVL树和树的旋转
二叉搜索树只有保持平衡时其查找效率才会高. 要保持二叉搜索树的平衡不是一件易事.不过还是有一些非常经典的办法可以做到,其中最好的方法就是将二叉搜索树实现为AVL树. AVL树得名于它的发明者 G.M. ...
- 使用CGlib出现java.lang.NoClassDefFoundError: org/objectweb/asm/Type异常
在学习使用CGlib生成动态代理对象,项目的源代码也很简单: package proxy; import java.lang.reflect.Method; import net.sf.cglib.p ...
- oracle中order by造成分页错误
问题:今天在工作中,在service中调用分页查询列表接口的时候,返回的到页面的数据中总是存在缺失的数据,还有重复的数据. 分析:select * from (select ROWNUM rn,t.* ...
- docker 安装Nginx
1.使用镜像加速拉取nginx [root@192 ~]# $ docker pull registry.docker-cn.com/library/nginx:1.15 2.通过docker run ...
- 从零搭建java后台管理系统(二)mysql和redis安装
接上篇开始安装mysql和redis 注意了,如果用阿里云服务器,外网访问的端口必须在安全组开启,否则外网访问不通 三.服务器安装redis和mysql 本次环境搭建将所有第三方服务会安装在阿里云服务 ...
- 使用 redis-dump 批量导入导出数据
有时候需要将 redis 的数据进行导入导出操作,可以使用 redis-dump 这款工具. 一.安装RVM redis-dump 工具依赖于2.2以上版本的 ruby,而 centos 环境下 yu ...
- Android开发之漫漫长途 XIX——HTTP
该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...
- Visual Studio 2012 智能提示功能消失解决办法
安装为Visual Studio 2012且更新到了Update3,但是发现智能提示功能用不了,查了一下,网上各种资料,重装VS,连重装系统的都有.不过有很多朋友都是使用命令行重置VS的方法解决了这个 ...