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. Nmap Windows 版本时区显示乱码

    Nmap 版本 $ nmap --version Nmap version 7.80 ( https://nmap.org ) Platform: i686-pc-windows-windows Co ...

  2. MySQL总结(5)

    视图 SELECT cust_name,cust_contact FROM customers,orders,orderitems WHERE customers.cust_id=orders.cus ...

  3. kafka 教程(三)-远程访问

    远程连接 kafka 配置 默认的 kafka 配置是无法远程访问的,解决该问题有几个方案. 方案1 advertised.listeners=PLAINTEXT://IP:9092 注意必须是 ip ...

  4. 【Java】 Java反射机制总结

    一.什么是反射 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的 ...

  5. python程序超时处理 timeout_decorator

    如下两个例子,实现对某个函数的超时处理(其实就是加了一个装饰器timeout): 成功例子: 代码: import time import timeout_decorator @timeout_dec ...

  6. [转载]一个支持Verilog的Vim插件——前言

    原文地址:一个支持Verilog的Vim插件--前言作者:hover 随着设计复杂度的增加,在书写代码中枯燥的重复性的劳动会越来越多.例如,例化若干个有上百个端口的子模块,这个工作没有任何创造性可言, ...

  7. python-函数1(定义-作用-优势-返回值)

    python-函数1(定义-作用-优势-返回值) 1.面向对象的定义是靠-类>>class2.面向过程的定义是靠-过程 >>def3.函数式编程的定义是靠-函数>> ...

  8. linux yum错误

    一. 错误:File contains no section headers. file: file:///etc/yum.repos.d/upgrade.repo, line: 1 'name=Ce ...

  9. Centos 7.5 双网卡内外网同时访问路由设置

    说明:服务器有两张网卡分别是eth0.eth1,eth0配置内网IP:192.168.1.1/24,eth1配置外网IP:10.1.1.1/24:要求192.168.0.0/16网段走网卡eth0,网 ...

  10. Codeforces 989 P循环节01构造 ABCD连通块构造 思维对云遮月参考系坐标轴转换

    A 直接判存不存在连续的三个包含A,B,C就行 /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a ...