Linux命令-awk部分命令及示例

发布时间:2024年01月19日

awk 是一个强大的文本分析工具,主要用于模式扫描和文本/数据提取。它是 UNIX/Linux 系统中的标准工具之一,用于处理文本文件和字符串。

基本结构

awk 'pattern { action }' file

其中:

  • pattern 是你要匹配的模式或条件。
  • action 是当模式匹配时要执行的命令或操作。
  • file 是你要处理的文件或输入源。

基础功能

  1. 打印行:使用 $0 来表示整行内容。
awk '{ print }' file

示例:打印文件中的所有行。
2. 打印字段:使用 $n 来表示第 n 个字段。默认字段分隔符是空格。

awk '{ print $1, $3 }' file

示例:打印文件中每行的第一个和第三个字段。

lsof -i :8080 | awk 'NR>1 {print $2}'

这里展示了使用awk命令来处理lsof的输出,并只打印出第二列的内容,即PID。在awk中,NR是一个特殊的变量,代表当前处理的记录号(通常是行号)。NR>1表示选择除第一行之外的所有行。这是因为第一行通常是标题行或列名,通常会排除它。
3. 变量:你可以在 awk 中定义和使用变量。

awk '{ total += $1 } END { print total }' file

示例:计算文件中第一列的总和并在结束时打印出来。
4. 条件语句:使用 ifelsewhile 等。

awk 'BEGIN { print "Start" } $1 > 10 { print "Number is greater than 10" } END { print "End" }' file

示例:如果第一列的值大于10,则打印一条消息。在开始和结束时打印其他消息。

  1. 循环:使用 for 循环遍历数组或文件中的行。
awk '{ for(i=1; i<=NF; i++) print $i }' file

示例:遍历每一行的每个字段并打印它们。

  1. 内置函数:例如,length()split() 等。
awk '{ print length($0), split($1, arr) }' file

示例:打印每行的长度和第一个字段中的单词数量。
7. 正则表达式:可以用来匹配和搜索文本。

awk '/pattern/ { print }' file

示例:打印包含特定模式的行。
8. 文件操作:例如,读取文件、写入文件等。

awk 'BEGIN { print "Hello World" > "newfile" }' file

示例:创建一个新文件并写入“Hello World”。
9. 数组:可以存储和处理数据结构。

awk '{ arr[$1]++ } END { for(i in arr) print i, arr[i] }' file

示例:统计文件中每个唯一值的出现次数。
10. 用户自定义函数:可以定义自己的函数来扩展 awk 的功能。例如,定义一个函数来计算两个数的和:

awk 'function add(x, y) { return x + y } { print add($1, $2) }' file
  1. 算术和逻辑操作符:如 +-*/%&&|| 等。例如,计算两个数的和与差:
awk '{ print $1 + $2, $1 - $2 }' file
  1. 多重赋值:可以在一行中为多个变量赋值。例如,同时获取第一列和第三列的值:
awk '{ a = $1; b = $3 } END { print a, b }' file

示例:在处理完所有行后打印第一列和第三列的值。
13. 多文件处理:可以同时处理多个文件。例如,打印两个文件中第一列的和:

awk '{ sum += $1 } END { print sum }' file1 file2

示例:计算两个文件中第一列的总和。

文章来源:https://blog.csdn.net/authorized_keys/article/details/135690217
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。