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

Linux 三剑客 awk 还有哪些高级用法?

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

awk 是 Linux 中强大的文本处理工具,除了基本用法外,还有许多高级功能。以下是一些常见的高级用法:

awk

1.使用内置变量

awk 提供了多个内置变量,如 NR(当前记录号)、NF(当前记录的字段数)、FS(字段分隔符)等。

  • 示例:打印文件行号及内容
awk '{print NR, $0}' file.txt
  • 示例:打印每行的最后一个字段
awk '{print $NF}' file.txt

2.自定义字段分隔符

通过 -F 选项或 FS 变量,可以指定字段分隔符。

  • 示例:使用逗号作为分隔符
awk -F, '{print $1, $2}' file.csv
  • 示例:在脚本中设置分隔符
awk 'BEGIN {FS=","} {print $1, $2}' file.csv

3.使用条件语句

awk 支持 if-else 等条件语句,用于根据条件处理数据。

  • 示例:打印第一字段大于 10 的行
awk '{if ($1 > 10) print $0}' file.txt
  • 示例:根据条件输出不同内容
awk '{if ($1 > 10) print "High"; else print "Low"}' file.txt

4.使用循环

awk 支持 forwhile 循环,适合处理数组或重复操作。

  • 示例:打印每行的所有字段
awk '{for (i=1; i<=NF; i++) print $i}' file.txt
  • 示例:计算字段总和
awk '{sum=0; for (i=1; i<=NF; i++) sum+=$i; print sum}' file.txt

5.使用数组

awk 支持关联数组,适合统计和分组操作。

  • 示例:统计字段出现次数
awk '{count[$1]++} END {for (item in count) print item, count[item]}' file.txt
  • 示例:按字段分组求和
awk '{sum[$1]+=$2} END {for (item in sum) print item, sum[item]}' file.txt

6.使用内置函数

awk 提供了多种内置函数,如 lengthsubstrgsub 等。

  • 示例:计算每行长度
awk '{print length($0)}' file.txt
  • 示例:替换字符串
awk '{gsub(/foo/, "bar"); print $0}' file.txt

7.多文件处理

awk 可以同时处理多个文件,通过 FILENAME 变量获取当前文件名。

  • 示例:打印文件名及内容
awk '{print FILENAME, $0}' file1.txt file2.txt

8.BEGIN 和 END 块

BEGINEND 块分别用于在处理前后执行操作。

  • 示例:打印开始和结束信息
awk 'BEGIN {print "Start"} {print $0} END {print "End"}' file.txt
  • 示例:计算总和
awk '{sum+=$1} END {print sum}' file.txt

9.输出重定向

awk 支持将输出重定向到文件。

  • 示例:将输出写入文件
awk '{print $0 > "output.txt"}' file.txt

10.使用正则表达式

awk 支持正则表达式匹配。

  • 示例:匹配包含 "error" 的行
awk '/error/ {print $0}' file.txt
  • 示例:匹配以数字开头的行
awk '/^[0-9]/ {print $0}' file.txt

11.多行记录处理

通过设置 RS(记录分隔符),可以处理多行记录。

  • 示例:处理以空行分隔的多行记录
awk 'BEGIN {RS=""; FS="\n"} {print $1, $2}' file.txt

12.自定义输出格式

使用 printf 可以格式化输出。

  • 示例:格式化输出
awk '{printf "Name: %-10s Age: %d\n", $1, $2}' file.txt

13.处理命令行参数

通过 ARGCARGV 可以访问命令行参数。

  • 示例:打印命令行参数
awk 'BEGIN {for (i=0; i<ARGC; i++) print ARGV[i]}' file1.txt file2.txt

14.使用 getline 读取额外行

getline 用于读取额外行,适合处理复杂文本。

  • 示例:读取下一行并处理
awk '{print $0; getline; print $0}' file.txt

15.处理二进制数据

通过 strtonum 函数可以处理二进制数据。

  • 示例:将二进制字符串转换为十进制
awk '{print strtonum("0x" $1)}' file.txt

还是那句话:干中学,学中干

如果觉得不错的话,麻烦点个关注,收藏谢谢。

毕竟:

我太想进步了

相关推荐

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.将当前目录下修改的所有...