`

数据处理awk命令使用

 
阅读更多

 

 

 awk 是数据处理工具,他将一行数据分成多个字段来处理;

 默认:

 awk用空格来分割(分隔符可以自定-F)每一行数据,分割后用$N来取出分割后的每一个字段,

 用NF获取一共有多少字段(一般用这个可以过滤掉一些有缺陷的数据),

 awk默认每次读取到"\n"即回车为一行数据,可以用RS来自定义 

 分割后的数据各个字段输出默认为space来分割,可以用OFS来确定输出的分隔符

 

 可以用NR拿到数据处理到哪一行了

 可以用FNR获取数据总的记录数 

 可以读从哪个行到哪一行的数据: awk 'NR==10,NR==15{print}' a

 然后可以通过{print}来打印数据到控制台或者重定向到文件中 

 

 

1 语法格式 

  awk [-参数 变量] 'BEGIN{初始化}条件类型1{动作1}条件类型2{动作2}。。。。END{后处理}'

其中:BEGIN和END中的语句分别在开始读取文件(in_file)之前和读取完文件之后发挥作用,可以理解为初始化和扫尾。

2 参数说明:

  -F re:允许awk更改其字段分隔符

   -v var=$v 把v值赋值给var,如果有多个变量要赋值,那么就写多个-v,每个变量赋值对应一个-v

    e.g. 要打印文件a的第num行到num+num1行之间的行, 

      awk -v num=$num -v num1=$num1 'NR==num,NR==num+num1{print}' a 

3 内置变量

NR    已经读出的记录数

FNR    当前文件的记录数

FS    输入字段分隔符(缺省为:space:),相当于-F选项

OFS输出字段分隔符(缺省为:space:)

RS:输入记录分隔符,缺省为"\n"

ORS:输出记录分隔符,缺省为换行符,控制每个print语句后的输出符号

 

4例子:

1 读取两个文件

awk '{if(ARGIND==1){print "处理a文件"} if(ARGIND==2){print "处理b文件"}}' a b

2 控制读取到那个文件

 awk 'NR==FNR{print "处理文件a"} NR > FNR{print "处理文件b"}' a b

3 处理从哪一行到哪一行

awk 'NR==10,NR==15{print}' a

4 分隔符使用

awk -F ':' '{print}' a    和   awk 'BEGIN{FS=":"}{print}' a 是一样的

5 行分隔符使用: 

 awk -F ':' 'BEGIN{OFS=";"}{print $1,$2,$3}' b

6 打印当前记录字段个数

awk -F ':' '{print NF}' b

7 处理数据不规则的行

awk -F ':' '{if (NF == 3)print}' b

8 行分隔符使用

awk 'BEGIN{ RS = ";" } {print}' c 

 

小注释:awk把分割后的第1、2、3个字段用$1,$2,$3...表示,$0表示整个记录(一般就是一整行))

 

单引号处理:遇到单引号要用\ 转义,为了说明 \ 是转义字符要使用 ''单引号括起来,然后后面加一个单引号,如下:

awk -F ''\''' '{print $2}{print NF}' sucess.txt ;  

 

9 例子字符串连接: 

Ent_ID  企业 ID

ID  专利 ID

EntName  企业名称

IsDownDetail

 

 

awk -F "  " '{a="private" ;b=$1; c=(a" "b " // " $2 " ; ");print c }' zhuanli.txt  

 

输出:

private Ent_ID // 企业 ID  ; 

private ID // 专利 ID  ; 

private EntName // 企业名称  ;

 

 

 

 

 

分享到:
评论

相关推荐

    Awk命令使用实例.docx

    Awk是为高级文本处理而设计的通用脚本语言。它主要用作报告和分析工具。本文介绍awk在命令行中操作文本的使用方式。 Awk一次对一条记录进行操作,直到到达输入的末尾。记录由一个称为记录分隔符的字符分隔。默认的...

    linux 文本处理 awk 手册

    awk 是一种程序语言. 它具有一般程序语言常见的... 此外, awk内建有pipe的功能, 可将处理中的数据传送给外部的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很容易使用系统资源.

    awk命令详解 包括详细的组合结构

    任何awk语句都由模式和动作组成。在一个awk脚本中可能有许多语句。模式部分决定动作语句何时...处理即对数据进行的操作。如果省略模式部分,动作将时刻保持执行状态。 模式可以是任何条件语句或复合语句或正则表达式。

    awk入门到精通.pdf

    此外, awk内建有pipe的功能, 可将处理中的数据传送给外部 的 Shell命令加以处理, 再将Shell命令处理后的数据传回awk程序, 这个特点也使得awk程序很 容易使用系统资源. 由于awk具有上述特色, 在问题处理的过程中, 可...

    awk用法详解

    awk 是一种程序语言. 它具有一般程序语言常见的功能. 因awk 语言具有某些特点, 如: 使用直译器(Interpreter)不需先行编译;...将Shell 命令处理后的数据传回awk 程序, 这个特点也使得awk 程序很容易使用 系统资源.

    awk命令 文本和数据进行处理的编程语言

    awk命令是一种编程语言,用于在linux/unix下对文本和数据进行处理。 而且它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。 语法格式:awk [参数] [文件] 常用参数: -F ...

    一天一个shell命令 linux文本内容操作系列-awk命令详解

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

    Sed与Awk (中文版)

    awk是一种编程语言,它可以使你很容易地处理结构化数据和生成格式化报告。第二版介绍了awk的POSIX标准,同时介绍了一些可免费使用的以及商业版的awk。 本书在一开始就给出了一个概述和指南,论述了从grep到sed再到...

    awk命令详解 快速进阶 简洁入门

    shell中常用的awk指令用来处理成列的数据,功能强大,本文档是我学习的一些记录,参考了网上的一些资料,用于快速学习awk的基本用法。 本文档比较简洁,条例清晰。

    Sed与awk 中文第二版

    awk是一种编程语言,它可以使你很容易地处理结构化数据和生成格式化报告。第二版介绍了awk的posix标准,同时介绍了一些可免费使用的以及商业版的awk。 本书在一开始就给出了一个概述和指南,论述了从grep到sed再到...

    linux匹配命令awk、grep、sed简介

    awk本身就是UNIX/Linux的一种编程语言,用于处理数据和生成报告。 awk逐行方式扫描文件(或输入),以查找匹配某个特定模式的文本行,并对这些文本行执行指定动作。 awk是三个创始人的首字母,代表三个作者:Alfred ...

    Awk学习笔记和指南

    awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和 动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。...

    linux文本分析awk基础命令介绍(8)

    awk是一种模式扫描和处理语言,在对数据进行分析处理时,是十分强大的工具。 awk [options] ‘pattern {action}’ file… awk的工作过程是这样的:按行读取输入(标准输入或文件),对于符合模式pattern的行,执行...

    shell awk脚本总结.txt

    我们必须的工具有两个一个是shell一个是awk,awk对于处理文本文件是最最适合的掌握了awk我们就可以很方便的处理文本文件再借助一些shell命令我们可以很方便得到自己想要的结果。现在从简单的例子来总结一下我觉得会...

    Linux中awk的使用方法详解

    今天我就给大家介绍一个命令awk,他就能很好的解决我们对文本和数据处理的需求,使我们一条命令就解决很多问题。 一、awk命令简介 awk被称为文本处理三剑客之一,其名称得自于它的创始人 Alfred Aho 、Peter ...

    Linux 中awk 提取包含某个关键字的段落

    本文将使用命令awk将具有某个关键字的段落提取出来。 准备数据 Finalizer #3 daemon prio=8 os_prio=0 tid=0x00007fb2dc1aa800 nid=0x63f6 in Object.wait() [0x00007fb2be61f000] java.lang.Thread.State: ...

    awk学习笔记

    awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和 动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。...

    AWK教程文档

    awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它...

Global site tag (gtag.js) - Google Analytics