百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

搞懂linux awk的使用(linux中awk怎么用)

liuian 2025-04-08 16:04 17 浏览


注意,awk后面只能用单引号, awk能执行的指令只有print,这是awk程序内部定义的!,必须要用单引号将字符串原封不动传进去

awk中所有字符串需要双引号,否则当作变量, 变量和字符串可以直接连接

 awk [选项参数] 'script' var=value file(s)brawk [选项参数] -f scriptfile var=value file(s)


 注意,选项参数里面也有, -v var=value用于自定义变量,但是放置位置有要求,brawk 'script' var1=v1 var2=v2 ...  # 后面的变量定义,使用空格隔开brawk -v var1=v2 -v var2=v2 'script' var3=v3 ...  # 前面的变量定义,用多个-v来定义

1. 引用参数 $:

$1, $2, ... 分别是第一个参数,第二个参数....., $0表示整行


2.文本分割 -F

 # 使用","分割br $ awk -F, '{print $1,$2}'   log.txt  # -F与,的空格无关紧要br # 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割br $ awk -F '[ ,]'  '{print $1,$2,$5}'   log.txt


例子(如果要使用完整正则,应该用'单引号而非双引号,否则经常报错)

 # 简单的过滤条件br# 过滤得到第一列为2的行并输出brawk '$1==2 {print $1}' log.txt
 # 正则br# ~表示正则开始, / /中间是模式brawk '$1 ~/app/' tst.txt # 输出第一个参数中包含app的行brbr# 模式取反brawk '$1 !~/app/' test.txtbrawk '$1 !/app/' test.txt


 cat /proc/net/snmp | grep -E "Udp: [[:digit:]]+" | awk -F ' ' '{print $6 > "1.txt"; print $7 > "2.txt"}' br# 虽然只支持print, 但是还支持linux最基本的一些操作,如重定向
 # print的使用, 每个逗号输出一个空格brprint var1, var2, ... br# 变量也可以是字符串,支持字符串的连接:brprint var1","var2, var2 # 打印逗号的方式


内建变量

变量

描述

$n

当前记录的第n个字段,字段间由FS分隔

$0

完整的输入记录

ARGC

命令行参数的数目

ARGIND

命令行中当前文件的位置(从0开始算)

ARGV

包含命令行参数的数组

CONVFMT

数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组

ERRNO

最后一个系统错误的描述

FIELDWIDTHS

字段宽度列表(用空格键分隔)

FILENAME

当前文件名

FNR

各文件分别计数的行号

FS

字段分隔符(默认是任何空格)

IGNORECASE

如果为真,则进行忽略大小写的匹配

NF

一条记录的字段的数目

NR

已经读出的记录数,就是行号,从1开始

OFMT

数字的输出格式(默认值是%.6g)

OFS

输出记录分隔符(输出换行符),输出时用指定的符号代替换行符

ORS

输出记录分隔符(默认值是一个换行符)

RLENGTH

由match函数所匹配的字符串的长度

RS

记录分隔符(默认是一个换行符)

RSTART

由match函数所匹配的字符串的第一个位置

SUBSEP

数组下标分隔符(默认值是/034)


脚本:

1. 文件方式: 可以使用比较复杂的指令

 #!/bin/awk -fbr#运行前brBEGIN {br    math = 0br    english = 0br    computer = 0br br    printf "NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL\n"br    printf "---------------------------------------------\n"br}br#运行中br{br    math+=$3br    english+=$4br    computer+=$5br    printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5br}br#运行后brEND {br    printf "---------------------------------------------\n"br    printf "  TOTAL:%10d %8d %8d \n", math, english, computerbr    printf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NRbr}

2. 交互方式

 # 计算文件大小brls -l *.txt | awk '{sum+=$5} END {print sum}'br# 99乘法表brseq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'


3. awk 条件语句和循环语句:

 if (condition)br    action-1brelsebr    action-2brbrif (condition)br{br    actionbr}
 for (init, condition, incre\decre)br    actionbr    brwhile (condition)br    action
 breakbrcontinuebrexit: 退出程序

相关推荐

x-cmd install | jellex - 用 Python 语法在终端里玩转 JSON 数据!

还在为命令行下处理JSON数据烦恼吗?jellex来了!它是一款基于终端的交互式JSON和JSONLines数据处理工具,让你用熟悉的Python语法,轻松过滤、转换和探索JSO...

一篇长文带你在Python里玩转Json数据

Json简介Json(JavaScriptObjectNotation)很多网站都会用到Json格式来进行数据的传输和交换,就像上篇我提到的网易云音乐接口,它们返回的数据都是Json格式的。这因为...

Python JSON 魔法手册:数据转换的终极艺术

对话实录小白:(崩溃)我从API拿到了JSON数据,怎么变成Python对象?专家:(掏出魔法书)用json模块,轻松实现数据转换!JSON基础三连击1.字符串Python对...

Python JSON 详解教程(python json())

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式(lightweightdatainterchangeformat)常用于Web应用、配置文件(co...

Python 数据的 JSON 格式序列化及反序列化

在Python中,将数据转换为JSON格式非常简单,可以使用内置的json模块。json模块提供了json.dumps()和json.dump()方法,用于将Python对象...

如何使Python类可JSON序列化(python json 类)

技术背景在Python开发中,JSON(JavaScriptObjectNotation)是一种常用的数据交换格式。然而,Python的json模块默认只能序列化一些基本数据类型,如字典、列表、字...

详细介绍一下Python如何对JSON格式数据进行处理?

在Python中对于JSON数据的处理是在日常开发中的常见需求之一。通常情况下,对JSON数据的处理主要涉及到如下的的几个步骤对于JSON数据的解析操作对于JSON数据的处理操作对于JSON数据的格式...

Python 字典l转换成 JSON(python转化字典)

本文需要5分钟。如果对您有用可以点赞评论关注.Python字典到JSONJSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它基于ECMAScrip...

打造熟悉的VS界面风格(vs界面设计美化)

用惯了老机子的VS界面,换新机子时,各种不适应。现在重新打造老款样式:1)下载VisualStudio2013ColorThemeEditorhttps://marketplace.vis...

办公小技巧:全部亮相 让Excel单元格完全显示文本

平时我们在使用Excel制作表格的时候,经常会遇到由于文本内容较多,导致这些内容无法在一个单元格中完全显示。常规的方法是将单元格设置为“自动换行”,但是这样会影响整个文件的美观。下例是某小区的入住登记...

WinForms 中的 CheckBox 控件使用指南

在WinForms中,CheckBox控件是一个允许用户选择或取消选择的单选按钮。它通常用于表示布尔值(真/假)或允许多选的情况。以下是如何使用CheckBox控件的一些基本信息和示例代码。创建...

图片转文字--四种OCR工具的安装和使用

本文仅测试简单的安装和使用,下一步应该是测试不同数据集下的检测准确率和检测效率,敬请期待。作者的系统环境是:笔记本:ThindPadP520OS:win11显卡:QuadroP520一、EasyO...

C# 给Word每一页设置不同图片水印

Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法。下面,将以C#代码为例,对W...

集成的面向对象控件Xtreme Controls正式发布v17.0.0

CodejockXtremeControls为Windows图形用户软件工程师提供众多的有关MFC的控件产品,该产品是通过完全测试并专门为图形用户设计的一款专业控件。它是一款集成了面向对象的控件被...

Win10 Build 10061老问题修复新问题来

|责编:刘菲菲【中关村在线软件资讯】4月23日消息:微软今天正式推送了Windows10Build10061预览版这个版本除了正常的功能更新和调整外,还修复了多个bug。其中一部分对于开发者开...