awk是个优秀文本处理工具,可以说是一门程序设计语言。下面是兄弟连Linux培训

给大家介绍的awk内置变量。

  一、内置变量表

  属性 说明

  $0 当前记录(作为单个变量)

  $1~$n 当前记录的第n个字段,字段间由FS分隔

  FS 输入字段分隔符 默认是空格

  NF 当前记录中的字段个数,就是有多少列

  NR 已经读出的记录数,就是行号,从1开始

  RS 输入的记录他隔符默 认为换行符

  OFS 输出字段分隔符 默认也是空格

  ORS 输出的记录分隔符,默认为换行符

  ARGC 命令行参数个数

  ARGV 命令行参数数组

  FILENAME 当前输入文件的名字

  IGNORECASE 如果为真,则进行忽略大小写的匹配

  ARGIND 当前被处理文件的ARGV标志符

  CONVFMT 数字转换格式 %.6g

  ENVIRON UNIX环境变量

  ERRNO UNIX系统错误消息

  FIELDWIDTHS 输入字段宽度的空白分隔字符串

  FNR 当前记录数

  OFMT 数字的输出格式 %.6g

  RSTART 被匹配函数匹配的字符串首

  RLENGTH 被匹配函数匹配的字符串长度

  SUBSEP \034

  2、实例

  1、常用操作

  [chengmo@localhost ~]$ awk'/^root/{print $0}' /etc/passwd

  root:x:0:0:root:/root:/bin/bash

  /^root/ 为选择表达式,$0代表是逐行

  2、设置字段分隔符号(FS使用方法)

  [chengmo@localhost ~]$ awk'BEGIN{FS=":"}/^root/{print $1,$NF}' /etc/passwd

  root /bin/bash

  FS为字段分隔符,可以自己设置,默认是空格,因为passwd里面是”:”分隔,所以需要修改默认分隔符。NF是字段总数,$0代表当前行记录,$1-$n是当前行,各个字段对应值。

  3、记录条数(NR,FNR使用方法)

  [chengmo@localhost ~]$ awk 'BEGIN{FS=":"}{printNR,$1,$NF}' /etc/passwd

  1 root /bin/bash

  2 bin /sbin/nologin

  3 daemon /sbin/nologin

  4 adm /sbin/nologin

  5 lp /sbin/nologin

  6 sync /bin/sync

  7 shutdown /sbin/shutdown

  ……

  NR得到当前记录所在行

  4、设置输出字段分隔符(OFS使用方法)

  [chengmo@localhost ~]$ awk'BEGIN{FS=":";OFS="^^"}/^root/{print FNR,$1,$NF}'/etc/passwd

  1^^root^^/bin/bash

  OFS设置默认字段分隔符

  5、设置输出行记录分隔符(ORS使用方法)

  [chengmo@localhost ~]$ awk'BEGIN{FS=":";ORS="^^"}{print FNR,$1,$NF}' /etc/passwd

  1 root /bin/bash^^2 bin/sbin/nologin^^3 daemon /sbin/nologin^^4 adm /sbin/nologin^^5 lp /sbin/nologin

  从上面看,ORS默认是换行符,这里修改为:”^^”,所有行之间用”^^”分隔了。

  6、输入参数获取(ARGC ,ARGV使用)

  [chengmo@localhost ~]$ awk'BEGIN{FS=":";print "ARGC="ARGC;for(k in ARGV) {printk"="ARGV[k]; }}' /etc/passwd

  ARGC=2

  0=awk

  1=/etc/passwd

  ARGC得到所有输入参数个数,ARGV获得输入参数内容,是一个数组。

  7、获得传入的文件名(FILENAME使用)

  [chengmo@localhost ~]$ awk'BEGIN{FS=":";print FILENAME}{print FILENAME}' /etc/passwd

  /etc/passwd

  FILENAME,$0-$N,NF 不能使用在BEGIN中,BEGIN中不能获得任何与文件记录操作的变量。

  8、获得linux环境变量(ENVIRON使用)

  [chengmo@localhost ~]$ awk'BEGIN{print ENVIRON["PATH"];}' /etc/passwd

  /usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/lib/ccache:/usr/lib/icecc/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/java/jdk1.5.0_17/bin:/usr/java/jdk1.5.0_17/jre/bin:/usr/local/mysql/bin:/home/web97/bin

  ENVIRON是子典型数组,可以通过对应键值获得它的值。

  9、输出数据格式设置:(OFMT使用)

  [chengmo@localhost ~]$ awk'BEGIN{OFMT="%.3f";print 2/3,123.11111111;}' /etc/passwd

  0.667 123.111

  OFMT默认输出格式是:%.6g 保留六位小数,这里修改OFMT会修改默认数据输出格式。

  10、按宽度指定分隔符(FIELDWIDTHS使用)

  [chengmo@localhost ~]$ echo20100117054932 | awk 'BEGIN{FIELDWIDTHS="4 2 2 2 2 3"}{print$1"-"$2"-"$3,$4":"$5":"$6}'

  FIELDWIDTHS其格式为空格分隔的一串数字,用以对记录进行域的分隔,FIELDWIDTHS="4 2 2 2 2 2"就表示$1宽度是4,$2是2,$3是2 .... 。这个时候会忽略:FS分隔符。

  11、RSTARTRLENGTH使用

  [chengmo@localhost ~]$ awk'BEGIN{start=match("this is a test",/[a-z]+$/); print start, RSTART,RLENGTH }'

  11 11 4

  [chengmo@localhost ~]$ awk'BEGIN{start=match("this is a test",/^[a-z]+$/); print start, RSTART,RLENGTH }'

  0 0 –1

  RSTART 被匹配正则表达式首位置,RLENGTH 匹配字符长度,没有找到为-1.

Linux基础教程 linux awk内置变量使用介绍的更多相关文章

  1. 『忘了再学』Shell基础 — 29、AWK内置变量

    目录 1.AWK内置变量 2.练习说明 (1)$n变量练习 (2)FS变量练习 (3)NF变量和NR变量练习 3.总结: 1.AWK内置变量 AWK内置变量如下表: awk内置变量 作用 $0 代表目 ...

  2. 【转】awk内置变量

    awk是个优秀文本处理工具,可以说是一门程序设计语言.下面是awk内置变量. 一.内置变量表 属性 说明 $0 当前记录(作为单个变量) $1~$n 当前记录的第n个字段,字段间由FS分隔 FS 输入 ...

  3. awk 内置变量

    awk 内置变量 FS 设置输入域分隔符,等价于命令行 -F选项 OFS 输出域分隔符 NF 浏览记录的域的个数NR 已读的记录数RS 控制记录分隔符 ORS 输出记录分隔符 substr 截取指定的 ...

  4. Linux常用基本命令:三剑客命令之-awk内置变量与自定义变量

    AWK中,变量分为两种:内置变量与自定义变量. 常见的内置变量有: FS:输入字段分隔符, 默认为空白字符 OFS:输出字段分隔符, 默认为空白字符 RS:输入记录分隔符(输入换行符), 指定输入时的 ...

  5. linux awk 内置函数详细介绍(实例)

    这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y ...

  6. linux awk 内置函数详细介绍(实例)

    这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y ...

  7. awk内置变量 awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。

    ARGC 命令行参数个数 ARGV 命令行参数排列 ENVIRON 支持队列中系统环境变量的使用 FILENAME awk浏览的文件名 FNR 浏览文件的记录数 FS 设置输入域分隔符,等价于命令行 ...

  8. Linux基础教程 linux下使用find命令根据系统时间查找文件用法

      LinuxFind 兄弟连Linux培训 总结这些时间戳包括 复制代码代码如下: mtime 文件内容上次修改时间 atime 文件被读取或访问的时间 ctime 文件状态变化时间 mtime 和 ...

  9. Linux基础教程 linux中使用find命令搜索文件常用方法记录

    find是linux非常强大的搜索命令,通过man find查看find手册,可以发现find的说明一屏接一屏,估计要看完也得花不少时间.兄弟连Linux培训 小编总结了下,整理出find常用的使用方 ...

随机推荐

  1. Libra的思考

    这几年关注了很多的新技术,近期让我觉得值得一讲的是blockchain,刚巧6.18号就发布了Libra 他是这么介绍自己的 libra https://developers.libra.org/bl ...

  2. Java 并发编程:volatile的使用及其原理(二)

    一.volatile的作用 在<Java并发编程:核心理论>一文中,我们已经提到过可见性.有序性及原子性问题,通常情况下我们可以通过Synchronized关键字来解决这些个问题,不过如果 ...

  3. ASM下添加磁盘

    linux下asm磁盘扩容,此次扩容添加4块480G磁盘 第一步:multipath -ll : 查看多路径映射磁盘(两节点都做) 配置 /etc/multipath.conf文件,配置新加磁盘的al ...

  4. 接口自动化--数据加密之AES

    在接口测试中,会遇到加密的请求数据,例如:常用的base64加密,AES加密,在这里,简述用Python转化AES的加密方法 原理 官网链接:https://pycryptodome.readthed ...

  5. show slave status参数详解

    root@localhost (none)>show slave status\G *************************** 1. row ******************** ...

  6. spark 常用设置

    1.spark.hadoop.validateOutputSpecs 若设置为true,saveAsHadoopFile会验证输出目录是否存在.虽然设为false可直接覆盖文件路径

  7. WordPress 在Ubuntu下安装插件、主题输入FTP后无法创建目录

    最近自己在搞基于lnmp+wordpress的个人博客, 一切都就绪后,想改变下自己的主题,然后去Wordpress里面内置的主题安装下载的时候,提示:无法创建目录! 一般我们在Ubuntu系统上面安 ...

  8. python 链接mysql 事务

    import mysql.connector try: con = mysql.connector.connect( host="localhost", port="33 ...

  9. python基础预习小结

    一.执行python程序的两种方式 1.1 交互式 在终端内输入python3,然后输入python代码 1.2 命令式 在终端内输入python3文本文件路径 二.执行python的两种IDE 2. ...

  10. Django项目与mysql交互进行数据迁移时报错:AttributeError: 'str' object has no attribute 'decode'

    问题描述 Django项目启动,当我们执行命令 python manage.py makemigrations 出现如下错误: File , in last_executed_query query ...