上海微网站公司,网站建设的流程图示,山东正元建设网站,国外优秀创意的个人网页设计欣赏Linux Shell#xff1a;awk 命令
awk 是一种强大的文本分析工具#xff0c;广泛用于文本处理、数据提取和报告生成。它使用自己的编程语言来处理文件中的数据。在 Linux Shell 中#xff0c;awk 命令能够执行复杂的模式匹配、编辑和分析任务。本文将介绍 awk 的基础用法、高…Linux Shellawk 命令
awk 是一种强大的文本分析工具广泛用于文本处理、数据提取和报告生成。它使用自己的编程语言来处理文件中的数据。在 Linux Shell 中awk 命令能够执行复杂的模式匹配、编辑和分析任务。本文将介绍 awk 的基础用法、高级功能和一些实用的示例。
基础用法
语法和工作流程
awk 命令的基本语法如下
awk pattern {action} file这里pattern 表示一个条件表达式用于匹配文件中的文本行action 是一组在匹配到 pattern 的文本行上执行的命令用大括号 {} 包围。如果省略 pattern则 action 会在文件的每一行上执行。
awk 读取输入文件的每一行并将其分割成字段字段默认由空格分隔。这些字段可以通过 $1, $2, $3 等访问其中 $0 表示整行文本。
常用示例 打印文件内容 使用 awk 打印文件的每一行 awk {print} file.txt过滤和打印特定字段 打印文件每一行的第一个和第三个字段 awk {print $1, $3} file.txt条件过滤 只打印第一个字段大于10的行 awk $1 10 file.txt高级功能
内置变量
awk 提供了一系列内置变量用于访问记录和字段的信息如 NR当前记录数、NF当前记录的字段数、FS字段分隔符等。
数组
awk 支持一维和多维数组可以用于存储和操作数据集合。
控制结构
awk 支持包括 if-else、while、for 在内的控制结构使得数据处理更加灵活。
函数
awk 内置了字符串、数学和时间处理函数用户还可以定义自己的函数。
实用示例 统计文件的行数和字段数 awk {print Line No:, NR, - Fields:, NF} file.txt文本数据求和 假设 file.txt 的第二列包含数字求这些数字的总和 awk {sum $2} END {print sum} file.txt字段排序 对文件的第一列进行排序输出 awk {print $1} file.txt | sort文本替换 将文件中匹配到的字符串替换为另一个字符串并输出 awk {gsub(/old/, new); print} file.txt提取线程名
示例内容
Attach Listener #410 daemon prio9 os_prio0 cpu0.95ms elapsed23.42s tid0x00007efcec001800 nid0x3afc waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLE
VM Thread os_prio0 cpu16838.04ms elapsed7893.98s tid0x00007efd3410c000 nid0xe4d runnable
GC Thread#0 os_prio0 cpu25892.92ms elapsed7894.00s tid0x00007efd3403b000 nid0xe4a runnable
GC Thread#1 os_prio0 cpu25976.88ms elapsed7893.69s tid0x00007efd00001000 nid0xe58 runnable
GC Thread#2 os_prio0 cpu25870.39ms elapsed7893.69s tid0x00007efd00002800 nid0xe59 runnable
GC Thread#3 os_prio0 cpu26030.61ms elapsed7893.69s tid0x00007efd00004800 nid0xe5a runnable
GC Thread#4 os_prio0 cpu26117.53ms elapsed7892.88s tid0x00007efd0000a800 nid0xe6b runnable
GC Thread#5 os_prio0 cpu25883.62ms elapsed7892.88s tid0x00007efd0000c000 nid0xe6c runnable
GC Thread#6 os_prio0 cpu26060.07ms elapsed7892.88s tid0x00007efd0000e000 nid0xe6d runnable
GC Thread#7 os_prio0 cpu25909.10ms elapsed7892.88s tid0x00007efd0000f800 nid0xe6e runnable
CMS Main Thread os_prio0 cpu21894.02ms elapsed7894.00s tid0x00007efd340ab800 nid0xe4c runnable
CMS Thread#0 os_prio0 cpu6337.31ms elapsed7894.00s tid0x00007efd340a8800 nid0xe4b runnable
CMS Thread#1 os_prio0 cpu6391.38ms elapsed7892.87s tid0x00007efcfc001000 nid0xe6f runnable输出cpu时间 grep GC 20210420.md|awk {print $4} tips:awk 命令默认以空格分割 输出cpu时间大于26000ms的线程名 grep GC 20210420.md|awk -F [ ms] $726000 {print $0}|awk {print $2} -F [ ms]的意思是先以空格分割再用等号分割最后以ms分割 $726000 {print $0}参数7大于26000则输出结果
参考链接
AWK 用户手册https://www.gnu.org/software/gawk/manual/gawk.htmlAWK 程序设计语言https://www.amazon.com/AWK-Programming-Language-Alfred-Aho/dp/020107981X