首页 > 其他分享 >awk5个使用场景

awk5个使用场景

时间:2022-09-01 01:11:23浏览次数:82  
标签:场景 time 使用 案例 awk 内存 printf awk5

awk简介

  1. 首先要知道awk的使用场景,需了解awk有哪些优势与短板。
  2. 关于个人近期学习awk总结其优势:
    • awk对文本的处理运算效率同比其他工具效率高很多(比shell的for循环高10倍以上,运算比bc计时器也高很多)
    • awk默认可对多个空格进行列切分,需要再借助其他工具。
    • awk可以对任意多个字符进行列分隔。
    • 如果文本列很多,可通过NF定位到最后一列获取列数据。
    • awk工具处理文本的命令非常丰富,几乎可以看成一套完整的编程语言。
  3. 缺点
    • awk无法修改文本文件。

awk案例

  1. 案例场景:/etc/passwd 第一列、第三列、最后一列

    awk -F":" '{printf "%-20s%-3s%15s\n",$1,$3,$NF}' /etc/passwd
    

    image-20220831225737843

  2. 案例场景:获取内存信息、IP地址信息、磁盘分区信息

    内存信息:

    free -h|awk '/^Mem/{printf"已使用内存:%s\n当前空闲内存:%s\n内存使用率:%.2f%\n",$4,$3,$3/$2*100}'
    

    image-20220831231010598

    IP地址:

    ip address show eth0 |awk -F" +|/" '/inet/{printf"IP地址:%s\n",$3}'
    

    image-20220831232513661

    磁盘信息:

    df -h|awk -v i=0 -F" +|/" '/\/dev\/(nvm|sdb)/{i++ ;printf"%s.分区名称:%s\t大小:%s\t已使用:%s\t使用率:%s\n",i,$3,$4,$5,$7}'
    

    image-20220831234456014

  3. 案例场景:做简单循环,写一个九九乘法表并统计运行时间,以及比较shell for循环的运算时间

    time(awk 'BEGIN{for(i=1;i<=9;i++){ for(j=1;j<=i;j++){  printf"%s*%s=%s\t",i,j,i*j;if(j==i){printf"\n"}  }}}')
    

    image-20220901000305111

    time(for((i=1;i<=9;i++)) ;do for(( j=1;j<=i;j++)) ;do  echo -en "$i*$j=$((i*j))  " ; if(($i==$j)) ;then echo -e "\n" ;fi   ;done ;done)
    

    image-20220901001431856

  4. 案例场景:做多循环运算再统计运行时间,比较shell for循环运算时间

    time(awk -v num=0 'BEGIN{for(i=1;i<=1000000;i++){  num+=i};print num}')
    

    image-20220901002211304

    time( num=0;for((i=1;i<=1000000;i++)) ;do let num=$((num + i)) ;done ;echo $num)
    

    image-20220901003152164

  5. 案例场景:统计用户访问站点IP的个数,以apache日志为例

    cat /var/log/httpd/access_log-20220828|awk '{ ips[$1]++ }END{for(i in ips){print i,ips[i]}}'
    

    image-20220901010031115

标签:场景,time,使用,案例,awk,内存,printf,awk5
From: https://www.cnblogs.com/zxl1024320609/p/16645112.html

相关文章

  • Vim使用技巧(持续更新)
    好记性不如烂笔头,在这里记录一些Vim使用技巧1.批量替换字符串基本语法:[addr]s/源字符串/目的字符串/[option][addr]表示检索范围,省略时表示当前行。“1,20”:表......
  • CSS — 如何使用关键帧创建简单的动画
    CSS—如何使用关键帧创建简单的动画我决定对我从事的一些项目的关键帧做一个简单的教程。我不会使用JS对于本教程。第1步—设置HTML首先添加一些简单的样板H......
  • Jetpack架构组件学习(4)——APP Startup库的使用
    最近在研究APP的启动优化,也是发现了Jetpack中的AppStartup库,可以进行SDK的初始化操作,于是便是学习了,特此记录原文:Jetpack架构组件学习(4)——AppStartup库的使......
  • CH579M以太网控制板-多台控制板使用网线串联连接并作为TCP客户端和TCP服务器通信(和电
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/CH579_DTU_PBX"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明......
  • 使用 Gin 框架在 GoLang 中构建 API 服务
    使用Gin框架在GoLang中构建API服务今天我将向你展示如何在Go中构建一个简单的API服务。我们的项目演示将是一个简单的作者和他们的图书库项目。第一步:首先,我......
  • 使用 CSS 输入标签 — 教程
    使用CSS输入标签—教程HTML对于HTML,我们需要一个带有标签和输入的容器。我们还将为输入设置占位符(“”),这将允许我们使用CSS检测输入何时具有某些值。<divcla......
  • Navicat中简单索引的使用(初级,已完善)
    本篇文章介绍一个使用Navicat完成SQL简单索引的案例,和之前的文章-Navicat中简单触发器的使用(初级,已完善)一样,本篇文章是能让新手快速将索引用起来,不过多介绍索引更深层次的......
  • 使用 R Markdown 在 for 循环中生成标签集
    使用RMarkdown在for循环中生成标签集选项卡集是在MarkdownHTML文件中嵌套内容的好方法,使用for循环可以让它们在输出中自动迭代。Rmarkdown是与同事和主管分......
  • 我们应该如何在 CSS 中使用 rem、em、vw 和 px?
    我们应该如何在CSS中使用rem、em、vw和px?当我们开始创建网站时,我们通过HTML创建网站的基本结构,并使用CSS使网站的设计看起来更好。让我们检查一下rem、em、vw......
  • 使用 HTML 更改“Hello World”的边框
    使用HTML更改“HelloWorld”的边框编写一个helloworld程序意味着你已经开始学习这门语言了。helloworld程序的下一步应该是即兴创作。在本文中,我们将看到如何使......