那些令人惊叹的awk简略写法

​​​​​​​awk是一门美妙的语言,被称为unix命令行工具皇冠上的明珠。它有很多简略写法,用好了可以用极少的代码快速解决问题。

下面就列举一些令人惊叹的awk简略写法:

awk '{sub(/pattern/, "foobar")} 1' # 无论替换是否成功,始终为真的条件“1”都会打印每一行
awk 'NR % 6' # 打印除第 6、12、18 行以外的所有行...
awk 'NR > 5' # 从第 6 行开始打印(如 tail -n 6 或 sed '1,5d')
awk '$2 == “foo”' # 打印第二个字段为 “foo” 的行
awk 'NF >= 6' # 打印包含 6 个或更多字段的行
awk '/foo/ & & /bar/' # 打印与 /foo/ 和 /bar/ 匹配的行,顺序不限
awk '/foo/ && !/bar/' # 打印与 /foo/ 匹配但不匹配 /bar/ 的行
awk '/foo/ ||/bar/' # 打印匹配 /foo/ 或 /bar/ 的行(如 grep -e 'foo' -e 'bar')
awk '/foo/,/bar/' # 从行匹配 /foo/ 打印到行匹配 /bar/,包括
awk 'NF' # 只打印非空行(或者:不打印空行,其中 NF==0)
awk 'NF--' # 删除最后一个字段并打印该行
awk '$0 = NR“ ”$0' # 前置行号(赋值在条件中有效)
awk '!a[$0] ' # 抑制重复的行!(弄清楚它是如何工作的)

另一个例子 

$ seq 1 30 | awk 'ORS=NR%5?FS:RS'
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
26 27 28 29 30

上面这行代码所做的是将输入列化(这里以五列为一组,但只需将代码中的数字5更改为您想要的数字,或者使用一个变量并使用-v传递值)。为什么它会起作用?当awk打印一条输出记录(行)时,特殊变量ORS,顾名思义,包含附加到该行的分隔符。默认情况下,ORS为“\n”,即换行符。但是这里我们是根据三元运算符的结果显式地给ORS赋值。因此,如果NR%5为零(即,我们在第5,10,15行,等等),ORS获取RS的值(默认包含“\n”);否则,ORS将获取FS的值(默认情况下是一个空格)。

看到这里,你是否已对awk这门精巧的语言产生兴趣了呢?

 欢迎关注微信公众号:文本魔术,了解更多 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/288690.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在scrapy 使用selenium模拟登录获取cookie

前言 最近有一点点爬虫需求,想总结一下scrapy框架的一些基本使用方法,加深印象,自己一直习惯使用一些脚本文件运行爬虫,面对数据量非常大,稳定性要求比较高的,效率需求比较高的情况下还是用scrapy较为合适…

Seata:打造行业首个分布式事务产品

作者:季敏,阿里云分布式事务产品负责人、Seata 开源项目创始人 微服务架构下数据一致性的挑战 微服务开发的痛点 在 2019 年,我们基于 Dubbo Ecosystem Meetup,收集了 2000 多份关于“在微服务架构,哪些核心问题是开…

【C++】开源:ImGui图形用户界面库配置与使用

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍ImGui图形用户界面库配置与使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下&…

13 v-show指令

概述 v-show用于实现组件的显示和隐藏,和v-if单独使用的时候有点类似。不同的是,v-if会直接移除dom元素,而v-show只是让dom元素隐藏,而不会移除。 在实际开发中,v-show也经常被用到,需要重点掌握。 基本…

TypeScript【泛型1、泛型2、声明合并、命名空间 、模块1、模块2、声明文件简介】(五)-全面详解(学习总结---从入门到深化)

文章目录 泛型1 泛型2 声明合并 命名空间 模块1 模块2 声明文件简介 泛型1 泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性 首先,我们来实现一个函数…

nuxt学习笔记

主要看的课程1 课程1 课程2 上手简化版 初始化 1.创建项目 使用官方推荐的npx来安装: (npm的5.2.x版本后默认安装了npx) 首先,确保您已经安装了 yarn、npx(默认包含在 npm v5.2 中)或 npm (v6.1)。 使用 npx 进行搭建项目&…

stm32学习总结:4、Proteus8+STM32CubeMX+MDK仿真串口收发

stm32学习总结:4、Proteus8STM32CubeMXMDK仿真串口收发 文章目录 stm32学习总结:4、Proteus8STM32CubeMXMDK仿真串口收发一、前言二、资料收集三、STM32CubeMX配置串口1、配置开启USART12、设置usart中断优先级3、配置外设独立生成.c和.h 四、MDK串口收发…

Ubuntu 常用命令之 unzip 命令用法介绍

unzip命令在Ubuntu系统中用于解压缩.zip文件。它可以解压缩一个或多个.zip文件,并将文件解压缩到当前目录或指定的目录。 unzip命令的一般格式 unzip [选项] zipfile [file...]其中,zipfile是要解压的.zip文件,file是.zip文件中的特定文件。…

关键字:void关键字

在编程中,void 是一个关键字,用于表示函数没有返回值。具体来说,void 关键字的作用如下: 函数声明:在函数声明中使用 void 关键字可以指定函数没有返回值。例如: 这表示 func() 函数不返回任何值。 函数…

flutter自定义地图Marker完美展示图片

世人都说雪景美 寒风冻脚无人疼 只道是一身正气 结论 参考Flutter集成高德地图并添加自定义Maker先实现自定义Marker。如果自定义Marker中用到了图片,那么会碰到图片没有被绘制到Marker的问题,此时需要通过precacheImage来预加载图片,从而解…

2023/12/20 work

1. 使用select完成TCP客户端程序 2. 使用poll完成TCP并发服务器 3. 思维导图