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 ...
随机推荐
- 添加自己的component
在之前讲解esp-idf的文件结构时,曾经讲过component是esp-idf集成的功能块,这篇文章就来讲解下,如何在esp-idf 中添加自己的component. STEP1; 创建compon ...
- 3 week work—Position
源代码部分: (1)httm部分: <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- 循环队列 & 栈的共用空间
循环队列 非常好的数据结构,充分利用率空间,可以用于网络端存储socket消息! /*************************************** 作者: 未闻花语 版本: v1.0 ...
- 关于javac和java
1.为什么安装完jdk后不配置环境变量就能直接运行java,而不能运行javac 在安装jdk的时候jdk会自带一个jre(java运行环境),还会单独安装一个jre,默认路径是和jdk在同级目录,而 ...
- 用react+redux写一个todo
概述 最近学习redux,打算用redux写了一个todo.记录下来,供以后开发时参考,相信对其他人也有用. 代码 代码请见我的github 组织架构如下图:
- Spring webFlux:坐等spring-boot-starter-data-mysql-reactive
spring-boot-starter-data-mongodb-reactive spring-boot-starter-data-redis-reactive 坐等 spring-boot-sta ...
- centos7上安装cacti监控
简介 在企业网络运维过程中,管理员必须时刻关注服务器的运行状态,如CPU.内存.磁盘空间使用情况等.为了能够及时的发现问题,尽量减少故障的发生.当网络中的设备,服务器等数量较多时,可以部署一套监控系 ...
- Django Rest Swagger生成api文档
关于swagger Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因: Swagger 可以生成一个具有互动性的API控制台,开发者可以用来快速学习和尝试API. Sw ...
- [每天解决一问题系列 - 0005] WiX Burn 如何校验chained package的合法性
问题描述: 项目中使用Wix burn打包,内部包含了多个MSI.有时候会遇到如下错误 Error 0x80091007: Failed to verify hash of payload: Setu ...
- Linux驱动:内核等待队列
在Linux中, 一个等待队列由一个"等待队列头"来管理,等待队列是双向链表结构. 应用场合:将等待同一资源的进程挂在同一个等待队列中. 数据结构 在include/linux/w ...