linux 中awk 学习随笔

awk

  awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

常用案例:

 awk内置对象

ARGC               命令行参数个数
ARGV               命令行参数排列
ENVIRON            支持队列中系统环境变量的使用
FILENAME           awk浏览的文件名
FNR                浏览文件的记录数
FS                 设置输入域分隔符,等价于命令行 -F选项
NF                 浏览记录的域的个数
NR                 已读的记录数
OFS                输出域分隔符
ORS                输出记录分隔符
RS                 控制记录分隔符

$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。

print和printf

awk中同时提供了print和printf两种打印输出的函数。

其中print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。

printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。

awk编程

awk:数组

  因为awk中数组的下标可以是数字和字母,数组的下标通常被称为关键字(key)。值和关键字都存储在内部的一张针对key/value应用hash的表格里。由于hash不是顺序存储,因此在显示数组内容时会发现,它们并不是按照你预料的顺序显示出来的。数组和变量一样,都是在使用时自动创建的,awk也同样会自动判断其存储的是数字还是字符串。一般而言,awk中的数组用来从记录中收集信息,可以用于计算总和、统计单词以及跟踪模板被匹配的次数等

原文地址:https://www.cnblogs.com/new-sh/p/9248923.html

时间: 2024-10-11 12:07:40

linux 中awk 学习随笔的相关文章

linux中awk学习小结

awk与sed本身都是一个完整的编程语言,可以用来方便的处理文本.awk正常的结构: cat tmp.txt | awk 'BEGIN{}{}END{}'   --带有表头,带有中间的处理过程,带有结尾--常用用法:cat tmp.txt|awk '{print $1}'  --tmp.txt中字段已空格分隔,$0显示整行,$1表示第一个域,$NF最后一个,$NF-1倒数第二个域,默认的分隔符是空格--  1.域分隔符是:cat /etc/passwd|awk -F':' '{print $1,

Linux中awk后面的RS, ORS, FS, OFS 用法

Linux中awk后面的RS, ORS, FS, OFS 含义 一.RS 与 ORS 差在哪 我们经常会说,awk是基于行列操作文本的,但如何定义"行"呢?这就是RS的作用.  默认情况下,RS的值是\n.下面通过实例来理解下RS. echo '1a2a3a4a5' | awk '{print $1}' 1a2a3a4a5 echo '1a2a3a4a5' | awk 'BEGIN{RS="a"}{print $1}' 1 2 3 4 5我们可以看到,在更改了RS的

linux中awk的使用(绝对精华版)

在linux中awk绝对是核心工具,特别是在查找搜索这一领域,和掌握sed命令一样重要 下面为awk的一些基本知识,基于这些知识,可以让你随意操控一个文件: 在awk中:()括号为条件块,{}为执行的命令块 print命令打印文件内容awk '{print}' datafile -f参数执行awk脚本,如脚本为hello.awkawk -f hello.awk datafile $number表示记录的字段,其中$0表示整个串 FS表示字段分隔符,如下以逗号作为分隔符awk 'BEGIN{FS=

linux中重定向学习总结

文件标识符是从0到9结束的整数,指明了与进程有关的特定数据流源.当Linux系统启动一个进程(该进程可能用于执行Shell命令)时,将自动为该进程打开三个文件:标准输入.标准输出和标准错误输出,分别由文件标识符0.1.2标识,如果进程要打开其他的输入和输出文件,则从3开始标识.另外3-9是保留的标识符,可以把这些标识符指定为标准输入.标准输出和标准错误输出的临时连接.通常这样可以解决好多复杂的重定向请求. 下面举一些由管道符连接的重定向的例子: 1.ls -l | sed -n '1,5p'--

linux中awk详解

awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理,然后输出 awk命令形式: awk [-F|-f|-v] 'BEGIN{} //{command1; command2} END{}' file [-F|-f|-v]   大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value '  '          引用代码块 BEGIN   初始化代码块,在对每一行进行处理之前,初始

linux中sed学习小结

sed行处理工具 1.显示文件中匹配行 cat tmp.txt|sed -n '/匹配字符正则/p' (-n是不打印全部文件) 2.显示文件第几行 cat tmp.txt|sed -n '1p' --第一行-- cat tmp.txt|sed -n '1,3p' --一到三行-- 3.替换文件中字符 cat tmp.txt | sed 's/ee/ff/' 或者 sed 's/ee/ff/' tmp.txt --将tmp.txt文件中每行第一个匹配的ee替换为ff,不改变原文件-- cat tm

Linux设备驱动程序学习随笔1--从头文件 linux/moudle.h开始

所有的程序员入门的第一个程序都是从 Holle World 开始,linux嵌入式驱动开发也不例外,<Linux设备驱动程序>这本书的第一个程序就是hello world.然而,人生写驱动程序的第一次编译就异常的艰难. 以下是hello world 的程序,很简单,基本上学过C就能看懂,该程序包括两个头文件,引用了4个外部函数,内建2个函数. 1 #include <linux/init.h> 2 #include <linux/module.h> 3 4 MODULE

Linux中awk命令的简单用法

一.用例1: cat /proc/meminfo|grep "MemTotal"|awk '{print $2}' 说明,$2表示第2位,$0表示全部,如需表示$,可用$$转义.

mac 系统的Numbers格式化linux中awk后的结果

这里Numbers的对应规则如此: 如果源文件是 txt 文件 (xxx.txt) , 那么他的分隔符,就一定要是一个    tab 如果源文件是csv 文件 (yyy.csv) , 那么他的分隔符,就一定要是一个 逗号(comma) 可以使用 Pages或者 Textmate 之类的软件 查找并替换 所有分隔符 然后直接在 Numbers 中粘贴,即可自动分列 参考:http://bbs.feng.com/read-htm-tid-487026.html