首页 > 系统相关 >在Linux中,awk命令的如何使用?

在Linux中,awk命令的如何使用?

时间:2024-04-24 10:24:54浏览次数:28  
标签:打印 sum Linux filename 命令 awk 分隔符 print

在Linux中,awk是一个强大的文本处理工具,它允许你按照模式扫描文件,并根据扫描结果执行相应的操作,比如打印、修改或过滤文件中的数据。awk的语法灵活,可以进行复杂的文本分析和数据处理。下面是使用awk命令的一些基本概念和常见用法:

1. 基本结构

awk的基本命令格式如下:

awk 'pattern { action }' input_files
  • pattern:定义了满足什么条件的行会被执行后续的动作。它可以是正则表达式,也可以是关系表达式或逻辑表达式,甚至是省略(默认为所有行)。
  • { action }:定义了当pattern匹配成功时执行的操作,可以包括打印、赋值、算术运算等各种命令。
  • input_files:指定要处理的文件名,如果不指定文件,则从标准输入读取数据。
2. 常用内置变量和选项
  • FS(Field Separator):输入字段的分隔符,默认为空格或制表符。
  • NF:当前记录的字段数量。
  • $n:表示当前行的第n个字段,如$1代表第一列。
  • NR:行号,当前处理的是文件中的第几行。
  • OFS(Output Field Separator):输出字段的分隔符,默认也是空格。
  • ORS(Output Record Separator):输出记录的分隔符,默认为换行符。
3. 基本用法示例
  1. 打印所有行

    awk '{ print }' filename
    
  2. 打印特定列:打印文件中每一行的第二列。

    awk '{ print $2 }' filename
    
  3. 匹配并打印:打印包含特定字符串的所有行。

    awk '/pattern/{ print }' filename
    
  4. 条件过滤:打印第三列大于100的行。

    awk '$3 > 100 { print }' filename
    
  5. 使用变量和计算:计算并打印第二列和第三列的和。

    awk '{ sum = $2 + $3; print sum }' filename
    
  6. 设置字段分隔符:以逗号为分隔符处理CSV文件。

    awk -F ',' '{ print $1, $3 }' filename.csv
    
  7. 使用BEGIN和END块

    • BEGIN:在读取任何输入行之前执行的操作。

    • END:在处理完所有输入行之后执行的操作。

      awk 'BEGIN { print "Starting processing" }
           { sum += $1 }
           END   { print "Total sum:", sum }' numbers.txt
      
4. 高级用法
  • 正则表达式匹配:更复杂的模式匹配。
  • 多条件处理:使用逻辑运算符(&&, ||)组合多个条件。
  • 自定义分隔符:通过-F选项或在脚本中设置FS变量。
  • 生成新的输出格式:通过修改OFSORS控制输出样式。
  • 调用外部脚本:使用-f选项执行一个awk脚本文件。

综上所述,awk的强大之处在于它能够结合条件判断、循环、函数调用等编程元素,实现复杂的文本处理任务。熟练掌握awk可以极大地提升在Linux环境下的工作效率。

标签:打印,sum,Linux,filename,命令,awk,分隔符,print
From: https://www.cnblogs.com/huangjiabobk/p/18154494

相关文章

  • 在Linux中, 如何查看系统的资源使用情况?
    在Linux系统中,查看资源使用情况对于系统管理员来说是一项常规任务,它有助于了解系统的性能和瓶颈。以下是一些常用的命令和方法来查看系统的资源使用情况:1.查看CPU使用情况top:显示实时的CPU使用情况,包括用户空间、系统空间、空闲和每个进程的CPU占用率。tophtop:top的增强......
  • linux文件句柄数满,linux文件句柄数超出系统限制怎么办?
    1、问题阐述:toomanyopenfiles:顾名思义即打开过多文件数。不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。2、产生的原因:经常在使用linux的时候出现,大多数......
  • linux 中删除空行(包括空行、空格、制表符)
     001、测试数据[root@pc1test02]#lsa.txt[root@pc1test02]#cata.txt010203040506070809101112[root@pc1test02]#cat-Aa.txt##测试数据中包括什么也无、空格、制表符、空格+制表符的几种情况010203$$040506$$070809$^I^I$1011......
  • linux查看文件最后的修改时间
    文件时间主要包括三种:访问时间、修改时间和更改时间。执行:#statfilename.txt1、查看文件的修改时间atime访问时间指的是文件最后一次被访问的时间。要查看文件的访问时间,可以使用stat命令,并结合awk命令来提取时间信息。示例如下:stat-c%xredis.log2、查看文件的修改时间......
  • 在Linux下安装Anaconda
    1.下载Anaconda安装包在官网中找到自己需要的版本:https://repo.anaconda.com/archive/2.安装Anaconda使用wget指令安装(以我的版本为例):wgethttps://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh 运行结果如下: 找到你下载后的.sh文件,使用chmod给它赋......
  • linux 网络 cat /proc/net/dev 查看测试网络丢包情况
    可以通过cat/proc/net/dev查看测试网络丢包情况,drop关键字,查看所有网卡的丢包情况 bytes:接口发送或接收的数据的总字节数packets:接口发送或接收的数据包总数errs:由设备驱动程序检测到的发送或接收错误的总数drop:设备驱动程序丢弃的数据包总数fifo:FIFO缓冲区错误的......
  • Linux问题集合
    Linux问题集合1.Linux下如何定位死锁?如果你想排查你的Java程序是否死锁,则可以使用jstack工具,它是jdk自带的线程堆栈分析工具。在Linux下,我们可以使用pstack+gdb工具来定位死锁问题。pstack命令可以显示每个线程的栈跟踪信息(函数调用过程),它的使用方式也很简单,只......
  • 在Linux下查看GPU的使用情况
    1.nvidia-smi无需安装,nvidia自带,最常用。会显示GPU使用情况,但是过于简陋。  2.gpustat(彩色并简约的显示)安装:pipinstallgpustat使用:gpustat显然这种带高亮的显示看起来更舒服,而且可以显示出完整显卡的完整名称,以及正在使用GPU的用户,一个缺点就是不能像nvidia-smi一样显......
  • 聊聊 Linux iowait
    哈喽大家好,我是咸鱼。我们在使用top命令来查看Linux系统整体CPU使用情况的时候,往往看的是下面这一列:%Cpu(s):0.0us,0.0sy,0.0ni,100.0id,68.0wa,0.0hi,0.0si,0.0st其中,man手册解释wa表示CPU在等待I/O操作(iowait)的时间百分比。上面输出显......
  • linux下Mysql安装
    1、安装查看有没有安装过:yumlistinstalledmysql*rpm-qa|grepmysql*查看有没有安装包:yumlistmysql*安装mysql客户端:yuminstallmysql安装mysql服务器端:yuminstallmysql-server 在centOs7中未找到yuminstallmysql-devel2、启动  &&  停止数据......