AWK之随心所欲-高手篇

1.内置变量

变量名 描述
FS 输入字段分隔符,默认是空格或制表符
OFS 输出字段分隔符,默认是空格
RS 输入记录分隔符,默认是换行符\n
ORS 输出记录分隔符,默认是换行符\n
NF 统计当前记录中字段个数
NR 统计记录编号,每处理一行记录,编号就会+1
FNR 统计记录编号,每处理一行记录,编号也会+1,与 NR 不同的是,处理第二个 文件时,编号会重新计数。
ARGC 命令行参数数量
ARGV 命令行参数数组序列数组,下标从 0 开始,ARGV[0]是 awk
ARGIND 当前正在处理的文件索引值。第一个文件是 1,第二个文件是 2,以此类推
ENVIRON 当前系统的环境变量
FILENAME 输出当前处理的文件名
IGNORECASE 忽略大小写
SUBSEP 数组中下标的分隔符,默认为"\034"

1.1. FS和OFS

程序开始前复制给FS,与-F一样用

[[email protected] ~]# head -n5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[[email protected] ~]#
[[email protected] ~]# head -n5 /etc/passwd|awk 'BEGIN{FS=":"}{print $1,$2}'
root x
bin x
daemon x
adm x
lp x
OFS由于默认是空格,输出如果是:,那么逗号会变为*
[[email protected] ~]# head -n5 /etc/passwd|awk 'BEGIN{FS=":";OFS="*"}{print $1,$2}'
root*x
bin*x
daemon*x
adm*x
lp*x

1.2. RS和ORS

RS默认\n,指定分割符 ,ORS默认换行符,也可以指定输出符号
也就是说 将分割符换成你想要的样子

[[email protected] ~]# tail -n2  /etc/services |awk 'BEGIN{RS="/";ORS="+"}{print $0}'
iqobject        48619+udp               # iqobject
matahari        49000+tcp               # Matahari Broker

1.3. NF

字段统计
[[email protected] ~]# tail -n2 /etc/services |awk 'BEGIN{FS="/"}{print $NF}'
tcp               # 3GPP Cell Broadcast Service Protocol
tcp               # Image Systems Network Services

[[email protected] ~]# tail -n 2 /etc/services |awk 'BEGIN{FS="/"}{print NF}'
2
2

原文地址:https://www.cnblogs.com/linux-error/p/11237220.html

时间: 2024-10-20 23:26:21

AWK之随心所欲-高手篇的相关文章

Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇

Javascript面向对象特性实现(封装.继承.接口) Javascript作为弱类型语言,和Java.php等服务端脚本语言相比,拥有极强的灵活性.对于小型的web需求,在编写javascript时,可以选择面向过程的方式编程,显得高效:但在实际工作中,遇到的项目需求和框架较大的情况下,选择面向对象的方式编程显得尤其重要,Javascript原生语法中没有提供表述面向对象语言特性的关键字和语法(如extends.implement).为了实现这些面向对象的特性,需要额外编写一些代码,如下.

Sed&awk笔记之sed篇(转)

Sed是什么 <sed and awk>一书中(1.2 A Stream Editor)是这样解释的: Sed is a "non-interactive" stream-oriented editor. It is stream-oriented because, like many UNIXprograms, input flows through the program and is directed to standard output. Sed本质上是一个编辑器,

Sed&amp;awk笔记之sed篇

http://blog.csdn.net/a81895898/article/details/8482387 Sed是什么 <sed and awk>一书中(1.2 A Stream Editor)是这样解释的: Sed is a "non-interactive" stream-oriented editor. It is stream-oriented because, like many UNIXprograms, input flows through the pr

awk命令之基础篇

基本命令 awk'{action}' 输入文件 无条件执行action awk '/pattern/{action}' 输入文件 pattern匹配时执行action awk '(condition){action}' 输入文件 condition成立时执行action awk '/李四/{print $0}' tmp//输出含有'李四'关键字的一行记录 2 李四 70 awk '/^2/{print $0}' tmp//输出以2开头的一行记录 2 李四 70 关于字段: awk命令会读入的每一

awk命令之进阶篇

内置函数 数学函数 atan2(y,x) 计算y/x的反正切 cos(x) 计算x的余弦:x是弧度 sin(x) 计算x的正弦:x是弧度 exp(x) 计算e的x幂 log(x) 计算x的自然对数 sqrt(x) 计算x平方根 int(x) 计算x的截断至整数的值 rand() 返回一个随机数,范围0~1,小于1 srand(x) 设置rand函数的种子值,省略参数则使用时间作为参数.返回先前的种子值 awk'BEGIN{printexp(1)}' 2.71828 awk'BEGIN{print

Sed&amp;awk笔记之awk篇

http://blog.csdn.net/a81895898/article/details/8482333 Awk是什么 Awk.sed与grep,俗称Linux下的三剑客,它们之间有很多相似点,但是同样也各有各的特色,相似的地方是它们都可以匹配文本,其中sed和awk还可以用于文本编辑,而grep则不具备这个功用.sed是一种非交互式且面向字符流的编辑器(a "non-interactive" stream-oriented editor),而awk则是一门模式匹配的编程语言,因为

Sed&amp;awk笔记之awk篇(转)

Awk是什么 Awk.sed与grep,俗称Linux下的三剑客,它们之间有很多相似点,但是同样也各有各的特色,相似的地方是它们都可以匹配文本,其中sed和awk还可以用于文本编辑,而grep则不具备这个功用.sed是一种非交互式且面向字符流的编辑器(a "non-interactive" stream-oriented editor),而awk则是一门模式匹配的编程语言,因为它的主要功能是用于匹配文本并处理,同时它有一些编程语言才有的语法,例如函数.分支循环语句.变量等等,当然比起我

SharePoint 学习快速导航

根据我的学习过程,会不断的增加一些学习的快速链接 . 入门篇 SharePoint入门链接,针对刚刚开始了解SharePoint 的朋友,我也是处在入门的状态,随后会慢慢的累积增加 安装 | 部署 | 架构 | 了解SharePoint基本状况 | 门户网站的开发 | 开发工具 APP开发 | 身份认证 | 进阶篇 系统优化 |  扩展部署 | 分布式架构 | 高手篇 暂无

如果你现在学Android

虽然现在网上有不少Android的教程,不过现在Android的发展已经到了5.1,很多之前的开发教程和学习建议已经不是很适用,决定以自己的见解写一篇Android学习的教程,如果大家有什么好的意见或建可以评论给我. 工欲善其事,必先利其器 虽然Android开发的门槛比较低,但是有件得心应手的兵器还是很有必要的. 开发设备 : Mac (作为开发者,我认为入手一台mac还是很有必要的,推荐还是mac pro,这种设备真的是早用早享受,如果你是学生党那么这真的是你对自己非常好的投资,如果你不是,