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

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

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


注意,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: 退出程序

相关推荐

git的撤销、删除和版本回退_git撤销删除的文件

备注:本文参考于廖雪峰的博客Git教程。依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文。知识点:1、gitstatus,查看git仓库的状态2、gitdiff查看git修改了的内容...

程序员开发必会之git常用命令,git配置、拉取、提交、分支管理

整理日常开发过程中经常使用的git命令!git配置SSH刚进入项目开发中,我们首先需要配置git的config、配置SSH方式拉取代码,以后就免输入账号密码了!#按顺序执行gitconfig-...

Git使用指南 | 教你轻松学会Git_git用法详解

4000字,教大家学会Git使用。一、Git基础1、Git介绍Git是目前世界上最先进的分布式版本控制系统。版本控制系统:设计师在设计的时候做了很多版本经过了数天去问设计师每个版本都改了些啥,设计师此...

深入浅出 Git_深入浅出 gRPC

git初体验使用git前需设置用户名和Email,这些信息会出现在提交记录中以标识作者。gitconfig--globaluser.name"YeHanlin"gitc...

Git不提交指定文件的方法_git不提交指定文件的方法有哪些

大家在开发项目的时候都很喜欢使用git作为代码管理工具,但是在开发项目的时候我们的本地配置文件不应该覆盖服务器中的配置文件,我们使用命令gitstatus查看待提交文件的时候需要注意不要把本地的配...

相见恨晚的 Git 命令动画演示,一看就懂

虽然Git是一个强大的工具,但是我觉得大部分人都会同意我说的:它也可以是一个……噩梦!我一直觉得,使用Git的时候把操作过程在脑海里视觉化会非常有用:当我执行某个命令的时候,分支之间是如何交互...

GitCode的一些命令_git命令大全

GitCode的一些命令配置工具对所有本地仓库的用户信息进行配置$gitconfig--globaluser.name"[name]"对你的commit操作设置关联的用户名$...

【git】 如何删除所有 tag(本地和远程)

要删除所有本地和远程的Git标签,可以按照以下步骤进行:删除本地标签首先,删除本地标签。你可以使用以下命令删除本地的所有标签:gittag-d$(gittag-l)这将列出并删除所有本地...

互联网大漏洞:每600个网站就有1个暴露了.git文件夹

对于Web开发人员来说,向外界暴露你的.git文件夹绝对是一个菜鸟级错误。因为这样会允许任何人下载你的整个源代码存储库,包括数据库密码、加密盐、Hash和第三方接口密钥API,还有你的用户名和密码。多...

git常用命令整理_git 常用

一、Git仓库完整迁移完整迁移,就是指,不仅将所有代码移植到新的仓库,而且要保留所有的commit记录1.随便找个文件夹,从原地址克隆一份裸版本库gitclone--bare旧的git地址...

项目常用GIT操作命令_git常用操作命令 简书

Git仓库更新依赖的命令:gradle--refresh-dependenciesgradleaR完全编译;./gradlewecomm:packages:telephony:larges...

【超详细】Git 所有常用命令 + 提交规范全指南(建议收藏!)

Git命令大全初始化类命令作用gitinit初始化一个本地Git仓库(当前目录会出现.git文件夹)gitclone<仓库地址>克隆远程仓库到本地,一般用来拉项目提交代...

Git 常用的alias命令大全_git -a

Git的alias(别名)功能可以将常用的复杂命令简化,大幅提升操作效率。以下是一些实用的Gitalias配置和常用示例:一、配置alias的方法通过gitconfig命令设置,分...

Git使用教程:最详细、最傻瓜、最浅显、真正手把手教

导读:因为教程详细,所以行文有些长,新手边看边操作效果出乎你的预料。GitHub虽然有些许改版,但并无大碍。一、Git是什么?Git是目前世界上最先进的分布式版本控制系统。工作原理/流程:Work...

实用干货分享(3)- Git常用操作干货分享

官方学习地址https://git-scm.com/book/zh/v2简单的代码提交流程1.gitstatus查看工作区代码相对于暂存区的差别;2.gitadd.将当前目录下修改的所有...