掌握Shell awk的秘诀:轻松应对日常任务
  WnwLYQFkydn6 2023年11月02日 29 0

掌握Shell awk的秘诀:轻松应对日常任务_数据

awk工作原理

  • 逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。
  • awk倾向于将一行分成多个"字段"然后再进行处理。
  • awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。
  • 使用awk命令的过程中,可以使用逻辑操作符"&&"表示"与"、"|"表示"或"、"!"表示"非",还可以进行简单的数学运算,如+、-、*、/、%、^分别表示加、减、乘、除、取余和乘方。

awk基本用法

awk是一种文本处理工具,常用于生成报告、格式化数据等。它的基本用法如下:

awk [options] 'pattern { action }' file
  • options:可选参数,如 -F 指定分隔符。
  • pattern:匹配模式,用于筛选符合条件的行。
  • action:对匹配到的行执行的操作。
  • file:要处理的文件。

下面是一些常见的awk用法示例:

  1. 打印文件的第一列:
awk '{ print $1 }' file.txt
  1. 打印文件中包含特定字符串的行:
awk '/pattern/ { print }' file.txt
  1. 使用逗号作为分隔符,打印第二列和第三列:
awk -F, '{ print $2, $3 }' file.txt
  1. 对第一列求和:
awk '{ sum += $1 } END { print sum }' file.txt
  1. 计算第一列大于10的行的总数:
awk '$1 > 10 { count++ } END { print count }' file.txt

awk常见的内建变量

  1. $0:表示当前处理的行的整行内容。通常在处理整行数据时使用,例如打印整行内容或进行字符串匹配。
  2. NR:表示当前处理的行的行号或序数。它可以用来追踪数据的行数,通常在需要记录行数或行号的情况下使用。
  3. $n:表示当前处理行的第n个字段(第n列)。这些字段是由字段分隔符(FS或-F指定)分割的数据的一部分。可以通过$n来访问特定字段的内容,例如$1表示第一个字段,$2表示第二个字段,以此类推。
  4. FS:列分隔符。用于指定每行文本的字段分隔符,默认为空格或制表符。可以使用-F选项来设置。FS定义了字段之间的分隔符,帮助AWK将每行数据划分为字段。
  5. OFS:输出内容的列分隔符。与FS类似,但用于控制AWK输出结果的字段之间的分隔符。可以通过修改OFS来自定义输出格式。
  6. NF:表示当前处理的行的字段个数。NF的值等于当前行中的字段数。通常用于循环遍历所有字段,尤其是当字段数不固定时很有用。$NF代表最后一个字段。
  7. FILENAME:被处理的文件名。在处理多个文件时,可以使用FILENAME来跟踪当前正在处理的文件的名称。
  8. RS:行分隔符。AWK从文件上读取数据时,将根据RS的定义将数据切分为多个记录(行)。默认情况下,RS是换行符('\n'),但您可以根据需要自定义RS以适应不同的数据格式



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  eHipUjOuzYYH   2023年12月07日   24   0   0 数据乐观锁redis
  jnZtF7Co41Wg   2023年12月09日   26   0   0 客户端服务端数据
WnwLYQFkydn6