四时宝库

程序员的知识宝库

linux常用awk命令(shell)(linuxawk的基本用法)

awk 是 Linux 中非常强大的文本处理工具,特别适合处理结构化文本(如 CSV、日志文件等)。以下是一些常用的 awk 示例。


1.打印文件的每一行

awk '{print $0}' file.txt
  • $0 表示整行内容。

2.打印文件的每一行的第一个字段

awk '{print $1}' file.txt
  • 默认以空格或制表符为分隔符,$1 表示第一个字段。

3.指定分隔符

awk -F',' '{print $2}' file.csv
  • -F',' 指定逗号为字段分隔符,打印每行的第二个字段。

4.打印特定行

awk 'NR == 3' file.txt
  • NR 表示当前行号,打印第 3 行。

5.打印行号

awk '{print NR, $0}' file.txt
  • NR 是当前行号,$0 是整行内容。

6.打印文件的总行数

awk 'END {print NR}' file.txt
  • END 表示处理完所有行后执行,NR 是总行数。

7.打印匹配特定模式的行

awk '/error/ {print $0}' logfile.txt
  • 打印包含 "error" 的行。

8.打印匹配模式的行的特定字段

awk '/error/ {print $1, $3}' logfile.txt
  • 打印包含 "error" 的行的第 1 和第 3 个字段。

9.条件判断

awk '$3 > 100 {print $0}' data.txt
  • 如果第 3 个字段的值大于 100,则打印整行。

10.计算某一列的总和

awk '{sum += $1} END {print sum}' file.txt
  • 计算第 1 列的总和并输出。

11.打印字段数

awk '{print NF}' file.txt
  • NF 表示当前行的字段数。

12.打印最后一列

awk '{print $NF}' file.txt
  • $NF 表示最后一个字段。

13.多条件匹配

awk '$1 == "foo" && $2 > 10 {print $0}' file.txt
  • 如果第 1 个字段是 "foo" 且第 2 个字段大于 10,则打印整行。

14.替换字段内容

awk '{$3 = "new_value"; print $0}' file.txt
  • 将第 3 个字段替换为 "new_value",然后打印整行。

15.格式化输出

awk '{printf "Name: %s, Age: %d\n", $1, $2}' file.txt
  • 使用 printf 格式化输出,%s 表示字符串,%d 表示整数。

16.处理多个文件

awk '{print FILENAME, $0}' file1.txt file2.txt
  • FILENAME 表示当前文件名,打印文件名和每行内容。

17.忽略大小写匹配

awk 'BEGIN {IGNORECASE=1} /error/ {print $0}' logfile.txt
  • BEGIN 块设置 IGNORECASE=1,忽略大小写匹配 "error"。

18.统计某一列的最大值

awk 'max < $1 {max = $1} END {print max}' file.txt
  • 找出第 1 列的最大值并输出。

19.按行处理并执行外部命令

awk '{system("echo " $1)}' file.txt
  • 使用 system 函数调用外部命令(如 echo)。

20.处理 CSV 文件

awk -F',' '{print $1, $3}' data.csv
  • 以逗号为分隔符,打印第 1 和第 3 列。

21.跳过文件头

awk 'NR > 1 {print $0}' file.txt
  • 跳过第 1 行(通常是表头),打印剩余行。

22.按列求和并输出

awk '{sum += $1} END {print "Total:", sum}' file.txt
  • 计算第 1 列的总和,并在最后输出。

23.根据条件过滤并保存到新文件

awk '$3 > 50 {print $0 > "output.txt"}' file.txt
  • 如果第 3 列大于 50,则将整行保存到 output.txt。

24.统计某一列的唯一值

awk '{count[$1]++} END {for (item in count) print item, count[item]}' file.txt
  • 统计第 1 列的唯一值及其出现次数。

25.处理多行记录

如果文件中的记录跨越多行(例如日志文件),可以使用 RS(记录分隔符):

awk 'BEGIN {RS="\n\n"} {print $0}' file.txt
  • 将空行作为记录分隔符,处理多行记录

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接