实战文件: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 表示 第1至n列,例子如上
-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
可以从上述命令执行结果和对应说明中理解各个参数的应用,为了说明FNR和NR的区别,我们用两个文件来做:
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 是一个强大的文本处理工具,在 Linux 和 Unix 系统中广泛使用。AWK 的基本命令格式如下: ``` awk [选项...
### AWK 应用程序入门与实例 #### Awk简介及基本概念 Awk是一种功能强大的文本处理语言,尤其适用于处理结构化的数据文件,并能够轻松完成格式化输出、数据分析等任务。尽管其名称可能看起来有些怪异,但其实用性...
本篇文章主要探讨了`awk`在Linux Web服务器故障分析和网站日志分析中的应用。 1. **TCP连接状态分析** - `netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn`: 此命令用于统计不同TCP连接状态的数量,`$6`...
Awk 是一种功能强大的文本处理工具,广泛应用于 Unix 和类 Unix 系统中。它的名字来源于三位设计者的名字首字母:Aho (Peter)、Weinberger (Brian) 和 Kernighan (Doug)。Awk 作为一款独特的编程语言,它不仅能够...
8. **Shell中的awk应用**: - 在Shell脚本中,awk常与其他命令如`grep`、`sed`结合使用,进行复杂的文本处理任务。 9. **学习资源**: - 提供的两个文档——"Shell编程下的AWK语法小结.doc"和"AWK使用手册.doc"是...
书中提供的源代码涵盖了各种awk应用实例,如日志分析、数据报表生成、数据过滤等。 在sedawk2progs这个压缩包中,包含了书中所有例程和源代码,这对于学习和实践这两个工具至关重要。读者可以逐个运行这些程序,...
10. **awk应用示例** - 分析日志文件,找出访问量最高的页面。 - CSV数据处理,提取特定列的数据。 - 检查文件中的错误模式,如空行、特定字符等。 - 生成报告,通过计算平均值、总和等统计信息。 通过深入学习...
Linux awk 高级应用 awk 是一个基于模式匹配检查输入文本的数据处理引擎,由 Aho Wwinberger Kernighan 创造。它通常用在 shell 中,获取指定的数据,单独使用时,可对文本数据做统计。awk 也是一种编程语言,拥有 ...
#### Awk 应用示例 1. **打印/etc/passwd文件的第一列**: ```sh awk -F: '{print $1}' /etc/passwd ``` 2. **将输出重定向到文件**: ```sh awk -F: '{print $1}' /etc/passwd > users.txt ``` 3. **打印...
"awk-prototype"项目看起来是基于`awk`构建的应用程序原型,可能用于快速处理特定的数据任务。这个项目与JavaScript相关,可能意味着它通过某种方式与JavaScript集成,比如在Node.js环境中使用,或者作为JavaScript...
3. Awk应用:理解其工作原理,掌握数据处理和分析技巧,以及编写复杂的逻辑和报告生成。 4. Shell脚本实战:解决常见的Shell编程难题,提高脚本的稳定性和效率。 5. 文本处理和数据分析:结合sed和awk进行高效的文本...
awk的常见应用场景是编写小型工具,它们解决特定问题,通过Shell的管道功能组合起来解决更大问题。这种解题方式允许灵活重组和重用小工具,也可以用于快速验证大型程序原型,如果需要更高性能,可以之后用C语言重写...
下面是一份 awk 教程,从基础知识到高级应用,涵盖了 awk 的基本概念、语法、函数和应用实例。 awk 基础知识 awk 的基本结构是 pattern{action},其中 pattern 是awk的模式, action 是awk的动作。awk 的模式可以...
**sed和awk工具的介绍与应用** sed和awk是广泛应用于UNIX系统中的两个文本处理工具。sed是流编辑器(stream editor)的缩写,而awk则是一种编程语言,得名于其三位开发者:Alfred Aho、Peter J. Weinberger和Brian ...
如果没有任何模式,那么操作会应用到所有行。如果没有指定操作,awk会默认打印匹配的行。 **实例** 例如,以下命令会打印所有包含字符串"root"的行: ```bash awk '/root/' test ``` 而这个命令会打印第三字段...