`
阅读更多

sample文件如下, 便于测试:

Heigh-ho! sing, heigh-ho! unto the green holly:
Most friendship is feigning, most loving mere folly:
Then, heigh-ho, the holly!

一. 使用 

1.  显示全部内容:

awk '{ print }'  sample

 解释的过程为如下:

 2. 管道来源:

cat sample | awk '{ print }'

 3. -f参数:

所以,假设一个名为 progfile 的文件中包含下面的内容:

{ print } 

awk -f progfile sample

 上面三个的参数打印的一致.

二. 按照特定的字符进行分割

 

上图为以换行符把Record分割, 在Record内部用空格分割到Filed的逻辑结构. 
1. 使用BEGIN对感叹号 (!) 作为字段分隔符打印示例数据的第 1 个字段:

$ awk ' BEGIN { FS = "!" } { print $1 } ' sample
Heigh-ho
Most friendship is feigning, most loving mere folly:
Then, heigh-ho, the holly
$

2. 使用-F改变分隔符:

#用=分割每行中的两个字符串,并分别打印出来
$vi shell.txt
ruanjianwang=20130101
greatwqs=20130456
eagle=20130202
$ awk -F "=" ' { print $1,$2 } ' shell.txt
ruanjianwang 20130101
greatwqs 20130456
eagle 20130202
$

 

$ awk -F "," ' { print $2 } ' sample
 heigh-ho! unto the green holly:
 most loving mere folly:
 heigh-ho
$
$ awk -F ":" ' { print $5 } ' /etc/passwd
# show user in system

 不能使用-F "!", 特殊字符原因.

 以:分割,第一位用户名,判断用户名为hadoop的行:

$ awk -F ":" '$1 == "hadoop"' /etc/passwd
hadoop:x:501:501::/home/hadoop:/bin/bash
$

大小比较

$ df | awk '$4>1000000 '
Filesystem           1K-blocks      Used Available Use% Mounted on
                       9934940   4960160   4461964  53% /home
tmpfs                  4087664         0   4087664   0% /dev/shm
/dev/sdb1            258027584  11962992 232957564   5% /data
$

 

三. 常见的AWK 变量

 

变量 描述
NF  该变量包含每个记录的字段个数。
NR  该变量包含当前的记录个数。
FS  该变量是字段分隔符。
RS  该变量是记录分隔符。
OFS  该变量是输出字段分隔符(为-F指定的符号,或者2.1中的情形)。
ORS  该变量是输出记录分隔符(一般为换行符)。
FILENAME  该变量包含所读取的输入文件的名称。
IGNORECASE  当 IGNORECASE 设置为非空值,GAWK 将忽略模式匹配中的大小写。 

1. NR测试(这里打印的1,2,3:相当于行号:起始为1):

$ awk '{ print NR, $NR }' sample
1 Heigh-ho!
2 friendship
3 the
$

NR为包含的记录个数,这里用行进行了分割,即上图中的Recode.  $NR 为显示参数,

2. NR和NF测试:

NF为每个Recode中根据字符串拆分后的字段(编号,起始为1)

$ awk ' { print "Record " NR " has " NF " fields and ends with " $NF}' sample
Record 1 has 7 fields and ends with holly:
Record 2 has 8 fields and ends with folly:
Record 3 has 4 fields and ends with holly!

四. 常用的 GAWK 语句

语句 描述
exit 停止程序的执行,并且退出。
next 停止处理当前记录,并且前进到下一条记录。
nextfile 停止处理当前文件,并且前进到下一个文件。
print 打印使用引号括起来的文本、记录、字段和变量。(缺省情况下是打印出当前整行记录。)
printf 打印格式化文本,类似于它的 C 语言对等成分,但必须指定结尾的换行。
sprintf

返回格式化文本字符串,与 printf 使用相同的格式。

很多时候用print

参考:

http://blog.csdn.net/tianlesoftware/article/details/6278273

http://www.ibm.com/developerworks/cn/education/aix/au-gawk/index.html

  • 大小: 6 KB
  • 大小: 15.1 KB
分享到:
评论
1 楼 greatwqs 2013-06-20  
使用AWK统计文本中含有某关键词出现的次数:
统计wqs关键词出现的次数
[hadoop@hadoopclus ~]$ echo 'greatwqsxpwqswqs'|awk -F'wqs' '{print NF-1}'
3

相关推荐

    Linuxawk命令详解[归类].pdf

    Linux awk 命令详解 Linux awk 命令是 Unix 环境中的一种功能强大的文本处理工具,由 Bell Labs 的 Alfred Aho、Peter Weinberger 和 Brian Kernighan 于 1977 年开发。awk 命令的主要功能是从文件或字符串中基于...

    最牛逼的Linux awk命令详细介绍和实例快速学习

    最牛逼的Linux awk命令详细介绍和实例快速学习

    Linux awk 命令用法详解

    Linux awk 命令 AWK是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 语法 awk [选项参数]...

    linux awk 命令大全

    Linux中的`awk`命令是一个强大的文本分析工具,它允许用户基于特定的模式匹配对文本文件进行处理。在本文中,我们将深入探讨`awk`的基本概念、语法和常见用途。 首先,`awk`有三个主要版本:`awk`、`nawk`和`gawk`...

    Linux_awk命令详解

    Linux中的awk命令是一个强大的文本分析工具,用于处理和解析文件中的数据。awk的名称来源于它的创始人: Alfred V. Aho, Peter J. Weinberger, 和 Brian W. Kernighan。awk有三个主要版本:awk、nawk(new awk)和...

    linux awk命令详解.docx

    Linux中的`awk`命令是一个强大的文本分析工具,用于处理和解析结构化的文本文件。它能够按照用户指定的模式对文本进行分析,并根据需要提取、修改或格式化数据。`awk`命令的名字来源于它的三位创始人——Aho、Wall和...

    awk命令详解

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

    awk--Linux awk 命令-基础知识概要

    AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首 字符。

    LINUX下awk命令详解

    ### Linux 下 awk 命令详解 #### 一、引言 `awk` 是一个功能强大的文本处理工具,在 Unix 和类 Unix 操作系统(如 Linux)中被广泛使用。它不仅可以进行模式匹配,还能执行复杂的文本处理任务。本文将详细介绍 `awk...

    linux-shell脚本命令:awk命令简介

    Linux系统中的awk命令是一个功能强大的文本处理工具,它可以对输入(通常是文件)进行模式扫描和处理。awk命令常用于在Linux shell脚本中进行数据提取、文本转换、数据报告生成等操作。本文将对awk命令的基本知识...

    grep,sed,awk命令实例大练习

    ### grep、sed、awk命令实例大练习 在Linux或Unix环境中,`grep`、`sed`和`awk`是三个非常强大的文本处理工具。通过掌握这些工具的基本用法及高级功能,用户可以高效地处理各种文本文件。下面将详细介绍如何使用...

    linu awk命令详解_linuawk命令详解_

    在Linux世界中,熟悉awk命令对于日常的系统管理和数据分析非常有用。 awk的工作原理是逐行读取输入文件,然后根据用户定义的模式和动作来处理这些行。模式通常是一个正则表达式,动作则是一段代码,awk会在匹配到...

    Linux实战awk详解

    例如,如果你想从一个CSV文件中提取第二列的所有数据,可以使用以下awk命令: ```bash awk -F ',' '{print $2}' filename.csv ``` 这里,"-F ','"指定了逗号作为字段分隔符,而`print $2`则表示打印每行的第二个字段...

    实验87-Linux命令:awk命令1

    【Linux命令:awk命令1】 awk 是 Linux/Unix 环境下的一种强大的文本分析工具,它的名字来源于其三位创建者的名字首字母:Alfred Aho、Peter Weinberger 和 Brian Kernighan。awk 可以从标准输入、文件或其他命令的...

    linux_awk 学习手册

    【Linux Awk 学习手册】 awk 是一个强大的文本分析工具,源于 UNIX 系统,由 Aho、Weinberg 和 Kernighan 三位开发者命名。它的全名并不表示特定的功能,而是创建者姓名的首字母缩写。awk 的主要功能在于对文本数据...

    Linux主要shell命令、sed、awk使用详解

    Linux 主要 shell 命令、sed、awk 使用详解 本文将详细介绍 Linux 的主要 shell 命令、sed 和 awk 的使用方法和原理。shell 是用户和 Linux 操作系统之间的接口,用户可以通过 shell 输入命令来操作 Linux 系统。...

    linux awk学习

    ### Linux Awk 学习知识点详解 #### 一、Awk 简介与基本用法 Awk 是一种在 Unix 和类 Unix 操作系统上广泛使用的文本处理工具,能够帮助用户快速处理文本数据,执行复杂的文本分析任务。Awk 的主要功能包括模式...

    linux文本处理工具awk命令详解

    linux文本处理工具awk命令详解,超详细的讲解awk命令,更多实战案例

Global site tag (gtag.js) - Google Analytics