`
erntoo
  • 浏览: 30009 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
  • erntoo: 修改somaxconn该内核参数默认值一般是128,对于负载很 ...
    rpm

awk 应用

阅读更多

 

实战文件:test.log  内容

 

1840 148990    0000 273839
1841 87999      0001 190432
1842 89306      0001 190433
1843 90431      0002 179591
1844 115357    0003 244693
1845 69873      0004 163991
1846 163991    0002 179541
1847 72279      0005 130333
1848 194204    0006 215442
1849 163973    0007 229824

 

 

 

基本语法:    

gawk [ POSIX or GNU style options ] -f program-file [ -- ] file ...

gawk [ POSIX or GNU style options ] [ -- ] program-text file ...

POSIX options “-” 为开头,后面加参数  “-f”

        

awk -F" "  '{print $4}' test.log |head -2
273839
190432

 

GNU style options : “--”为开头,后面加参数 ”--field-separator”

awk --field-separator=" "  '{print $4}' test.log |head -2
273839
190432
229824

 

awk --field-separator " "  '{print $4}' test.log |head -2
273839
190432

 

基本参数:

-F fs/-- field-separator=fs/--field-separator fs

         fs为分隔符分割file$0表示全部,$1..$n 表示 1n列,例子如上

-v val=val2/--assign val=val2

         val2赋值给val,例如

awk -v abc=xx '{print abc}' test.log |head -2
xx
xx

 

可以和shell结合使用,如

 

xx=22

 

 

awk -v abc=$xx '{print abc}' test.log |head -2
22
22

 

-f program-file/--file program-file/--file=program-file

         读取一个awk程序来执行,如:f.awk 内容为:

         

{print $1}

 

        

awk -F" " -f a.awk test.log |head -2
1840
1841

 

常用实战(默认分割符为控制或者制表符,故-F未写出):

 

1

awk '/0001/' test.log
1841 87999      0001 190432
1842 89306      0001 190433

 

显示出文件中包含 “0001” 的行

2

awk '/0003/,/1846/' test.log
1844 115357    0003 244693
1845 69873      0004 163991
1846 147958    0002 179541

 

显示出从包含”0003”的行到包含”1846”的行,如果包含”0003”的行不存在则输出为空,如果包含”1846”的行不存在则输出为从 包含“0003”的行开始到文件结尾

3

awk  '$2 == 163991' test.log
1846 163991    0002 179541

 

匹配出分割后第二列为”163991”的行

4

awk  '$1<=1843' test.log
1840 148990    0000 273839
1841 87999      0001 190432
1842 89306      0001 190433
1843 90431      0002 179591

 

匹配出分割后第一列小于或等于”1843”的行

5

awk  '$2/$1<40' test.log
1845 69873      0004 163991
1847 72279      0005 130333
匹配出分割后第二列和第一列运算后的行

 

6

awk  '$2>100000 && $1<1848' test.log
1840 148990    0000 273839
1844 115357    0003 244693
1846 163991    0002 179541

 

匹配出分割后逻辑运算之后的行

7

awk '$1>1844{print NR"分割符"NF"分割符"$1"分割符"$NF"分割符"FILENAME"分割符"FNR"分割符""\""FS"\"""分割符""\""OFS"\"""分割符""\""ORS"\"""分割符"ARGC"分割符"ARGV[2]}' test.log a=b
6分割符4分割符1845分割符163991分割符test.log分割符6分割符" "分割符" "分割符"
"分割符3分割符a=b
7分割符4分割符1846分割符179541分割符test.log分割符7分割符" "分割符" "分割符"
"分割符3分割符a=b
8分割符4分割符1847分割符130333分割符test.log分割符8分割符" "分割符" "分割符"
"分割符3分割符a=b
9分割符4分割符1848分割符215442分割符test.log分割符9分割符" "分割符" "分割符"
"分割符3分割符a=b
10分割符4分割符1849分割符229824分割符test.log分割符10分割符" "分割符" "分割符"
"分割符3分割符a=b

 

NR:到当前位置的记录数

NF:记录里面的字段(列)个数

FILENAME:分割的文件名称

$1:记录里面第一字段()

FNR:当前文件中的记录编号

FS:当前文件的分割符 –F 参数的内容

OFS:输出文件的分割符

ORS:输出记录的分割符,当前为换行符

ARGC:命令的参数个数 参数个数为3

ARGV:命令的参数值数组,下标从0开始 下标为2的参数是a=b

可以从上述命令执行结果和对应说明中理解各个参数的应用,为了说明FNRNR的区别,我们用两个文件来做:

 

tail -3  test.log >test2.log

 

 

cat test2.log
1847 72279      0005 130333
1848 194204    0006 215442
1849 163973    0007 229824

 

 

awk '{print FNR,NR,$0}' test.log  test2.log
1 1 1840 148990      0000 273839
2 2 1841 87999         0001 190432
3 3 1842 89306         0001 190433
4 4 1843 90431         0002 179591
5 5 1844 115357      0003 244693
6 6 1845 69873         0004 163991
7 7 1846 163991      0002 179541
8 8 1847 72279         0005 130333
9 9 1848 194204      0006 215442
10 10 1849 163973  0007 229824
1 11 1847 72279      0005 130333
2 12 1848 194204    0006 215442
3 13 1849 163973    0007 229824

 

 未完待续。。。。

 

 

 

分享到:
评论

相关推荐

    AWK应用和讲解步骤

    根据给定文件的信息,我们可以总结出以下关于 AWK 应用和讲解步骤的相关知识点: ### 一、AWK 基础语法 AWK 是一个强大的文本处理工具,在 Linux 和 Unix 系统中广泛使用。AWK 的基本命令格式如下: ``` awk [选项...

    AWK 应用程序入门与实例

    ### AWK 应用程序入门与实例 #### Awk简介及基本概念 Awk是一种功能强大的文本处理语言,尤其适用于处理结构化的数据文件,并能够轻松完成格式化输出、数据分析等任务。尽管其名称可能看起来有些怪异,但其实用性...

    071204awk应用1

    本篇文章主要探讨了`awk`在Linux Web服务器故障分析和网站日志分析中的应用。 1. **TCP连接状态分析** - `netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn`: 此命令用于统计不同TCP连接状态的数量,`$6`...

    awk使用手册,awk使用手册

    Awk 是一种功能强大的文本处理工具,广泛应用于 Unix 和类 Unix 系统中。它的名字来源于三位设计者的名字首字母:Aho (Peter)、Weinberger (Brian) 和 Kernighan (Doug)。Awk 作为一款独特的编程语言,它不仅能够...

    非常经典的awk教程

    8. **Shell中的awk应用**: - 在Shell脚本中,awk常与其他命令如`grep`、`sed`结合使用,进行复杂的文本处理任务。 9. **学习资源**: - 提供的两个文档——"Shell编程下的AWK语法小结.doc"和"AWK使用手册.doc"是...

    sed & awk 第二版 例程 源代码 源码 sed & awk sourcecode

    书中提供的源代码涵盖了各种awk应用实例,如日志分析、数据报表生成、数据过滤等。 在sedawk2progs这个压缩包中,包含了书中所有例程和源代码,这对于学习和实践这两个工具至关重要。读者可以逐个运行这些程序,...

    awk实用手册

    10. **awk应用示例** - 分析日志文件,找出访问量最高的页面。 - CSV数据处理,提取特定列的数据。 - 检查文件中的错误模式,如空行、特定字符等。 - 生成报告,通过计算平均值、总和等统计信息。 通过深入学习...

    Linux四剑客之awk高级应用.doc

    Linux awk 高级应用 awk 是一个基于模式匹配检查输入文本的数据处理引擎,由 Aho Wwinberger Kernighan 创造。它通常用在 shell 中,获取指定的数据,单独使用时,可对文本数据做统计。awk 也是一种编程语言,拥有 ...

    linux shell 编程之 awk用法

    #### Awk 应用示例 1. **打印/etc/passwd文件的第一列**: ```sh awk -F: '{print $1}' /etc/passwd ``` 2. **将输出重定向到文件**: ```sh awk -F: '{print $1}' /etc/passwd &gt; users.txt ``` 3. **打印...

    awk-prototype:awk 应用程序原型

    "awk-prototype"项目看起来是基于`awk`构建的应用程序原型,可能用于快速处理特定的数据任务。这个项目与JavaScript相关,可能意味着它通过某种方式与JavaScript集成,比如在Node.js环境中使用,或者作为JavaScript...

    Shell脚本专家指南.sed与awk第二版.shell十三问

    3. Awk应用:理解其工作原理,掌握数据处理和分析技巧,以及编写复杂的逻辑和报告生成。 4. Shell脚本实战:解决常见的Shell编程难题,提高脚本的稳定性和效率。 5. 文本处理和数据分析:结合sed和awk进行高效的文本...

    awk入门到精通.pdf

    awk的常见应用场景是编写小型工具,它们解决特定问题,通过Shell的管道功能组合起来解决更大问题。这种解题方式允许灵活重组和重用小工具,也可以用于快速验证大型程序原型,如果需要更高性能,可以之后用C语言重写...

    awk教程入门到精通

    下面是一份 awk 教程,从基础知识到高级应用,涵盖了 awk 的基本概念、语法、函数和应用实例。 awk 基础知识 awk 的基本结构是 pattern{action},其中 pattern 是awk的模式, action 是awk的动作。awk 的模式可以...

    Sed与Awk (中文版)

    **sed和awk工具的介绍与应用** sed和awk是广泛应用于UNIX系统中的两个文本处理工具。sed是流编辑器(stream editor)的缩写,而awk则是一种编程语言,得名于其三位开发者:Alfred Aho、Peter J. Weinberger和Brian ...

    awk参考资料下载awk

    如果没有任何模式,那么操作会应用到所有行。如果没有指定操作,awk会默认打印匹配的行。 **实例** 例如,以下命令会打印所有包含字符串"root"的行: ```bash awk '/root/' test ``` 而这个命令会打印第三字段...

Global site tag (gtag.js) - Google Analytics