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

news2025/1/16 20:36:09

​​​​​​​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.coloradmin.cn/o/1324325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一步步教你创建酒店预订小程序

如果你想为你的酒店或旅馆创建一个预订小程序,这篇文章将为你提供详细的步骤和指南。我们将按照以下顺序进行: 一、进入乔拓云网后台 首先,打开乔拓云网的官方网站,点击右上角的“登录”按钮,登录成功后,点…

基于vue与three.js,监听FPX(Stats类使用)

第一步,引入stats类并new出来 import Stats from three/examples/jsm/libs/stats.module.js; data(){return {stats : new Stats(),} } 第二步,添加dom mounted() {this.init3D();this.animate();window.addEventListener("keydown", this.…

【大数据面试】Flink面试题附答案

目录 ✅Flink介绍、特点、应用场景 ✅Flink与Spark Streaming的区别 ✅Flink有哪些部署模式 ✅Flink架构 ✅怎么设置并行度? ✅什么是算子链? ✅什么是任务槽(Task Slots)? ✅任务槽和并行度的关系 ✅Flink作…

easyexcel常见注解

easyexcel常见注解 一、依赖 <!--阿里巴巴EasyExcel依赖--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.10</version></dependency>二、常见注解 ExcelProperty 注解中…

使用Shell脚本监控主机

实验环境 某公司随着业务的不断发展&#xff0c;所使用的Linux服务器也越来越多&#xff0c;管理员希望编写一个简单的性 能监控脚本&#xff0c;放到各服务器中&#xff0c;当监控指标出现异常时发送告警邮件。 需求描述 > 编写名为sysmon.sh的 Shell 监控脚本。 > 监…

《数据结构、算法与应用C++语言描述》- 最小输者树模板的C++实现

输者树 完整可编译运行代码见&#xff1a;Github::Data-Structures-Algorithms-and-Applications/_31loserTree 输者树&#xff1a;每一个内部节点所记录的都是比赛的输者&#xff0c;晋级的节点记录在边上。本文中&#xff0c;赢者是分数较低的那个&#xff0c;输者是分数高…

安捷伦Agilent 34970A数据采集

易学易用 从34972A简化的配置到内置的图形Web界面&#xff0c;我们都投入了非常多的时间和精力&#xff0c;以帮助您节约宝贵的时间。一些非常简单的东西,例如模块上螺旋型端子连接器内置热电偶参考结、包括众多实例和提示的完整用户文档&#xff0c;以及使您能够在开机数分钟后…

【C++初阶】学习string类的模拟实现

目录 前言&#xff1a;一、创建文件和类二、实现string类2.1 私有成员和构造函数2.2 析构函数2.3 拷贝构造函数2.3.1 写法12.3.2 写法2 2.4 赋值重载函数2.4.1 写法12.4.2 写法2 2.5 迭代器遍历访问2.6 下标遍历访问2.7 reserve2.8 resize2.9 判空和清理2.10 尾插2.10.1 尾插字…

【mask转json】文件互转

mask图像转json文件 当只有mask图像时&#xff0c;可使用下面代码得到json文件 import cv2 import os import json import sysdef func(file:str) -> dict:png cv2.imread(file)gray cv2.cvtColor(png, cv2.COLOR_BGR2GRAY)_, binary cv2.threshold(gray,10,255,cv2.TH…

在线考试系统-软件与环境

一. 软件 1.Navicat、phpstudy、Idea、Vsode 参考 网盘链接 二.配置文件 1.Nodejs、JDK 参考 网盘链接 三.安装运行 1.下载网盘内的软件&#xff0c;并进行安装 2.安装对应的配置文件并进行配置 (1)VsCode 运行 a.新建terminal b.输入命令 npm run dev c.启动成功 (2)Php…

力扣题目学习笔记(OC + Swift) 14. 最长公共前缀

14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 方法一 竖向扫描法 个人感觉纵向扫描方式比较直观&#xff0c;符合人类理解方式&#xff0c;从前往后遍历所有字符串的每一列&#xff0c;比较相同列上的…

通过https协议访问Tomcat部署并使用Shiro认证的应用跳转登到录页时协议变为http的问题

问题描述&#xff1a; 在最近的一个项目中&#xff0c;有一个存在较久&#xff0c;并且只在内部城域网可访问的一个使用Shiro框架进行安全管理的Java应用&#xff0c;该应用部署在Tomcat服务器上。起初&#xff0c;应用程序可以通过HTTP协议访问&#xff0c;一切运行都没…

海外代理IP如何选择?如何避开误区?

近年来&#xff0c;我国互联网商业保持持续发展的状态大环境的优化&#xff0c;大大小小的企业都想乘胜追击&#xff0c;大展宏图&#xff0c;积极推动各项数据业务的进程。 而对于跨境业务来说&#xff0c;代理IP是不可或缺的重要工具之一&#xff0c;市面上代理IP类型众多&a…

基于k6和python进行自动化性能测试

摘要&#xff1a;在性能测试中&#xff0c;达到相应的性能指标对于一个软件来说十分重要&#xff0c;在本文中&#xff0c;将介绍一种现代化性能测试工具k6。 import http from k6/http; import { sleep } from k6; export default function () {http.get(https://test-api.co…

Java对接腾讯多人音视频房间示例

最近在对接腾讯的多人音视频房间&#xff0c;做一个类似于腾讯会议的工具&#xff0c;至于为什么不直接用腾讯会议&#xff0c;这个我也不知道&#xff0c;当然我也不敢问 首先是腾讯官方的文档地址&#xff1a;https://cloud.tencent.com/document/product/1690 我是后端所以…

大一C语言查缺补漏1 12.2

学习方向非C语言方向&#xff0c;但是专业是。。 仅供参考&#xff0c;&#xff0c;祝大家期末考试顺利。 对于二维数组定义&#xff0c;要给出明确的定义 eg&#xff1a;double a [21][4] int a [ ][3] {1,2,3,4,5,6} 不可以是&#xff1a;int a [ ][3]&#xff1b; 在c…

SpringBlade export-user SQL 注入漏洞复现

0x01 产品简介 SpringBlade 是一个由商业级项目升级优化而来的 SpringCloud 分布式微服务架构、SpringBoot 单体式微服务架构并存的综合型项目。 0x02 漏洞概述 SpringBlade v3.2.0 及之前版本框架后台 export-user 路径存在安全漏洞,攻击者利用该漏洞可通过组件customSqlS…

Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解

文章目录 Dismissible 简介使用场景常用属性基本用法举例注意事项 Dismissible 简介 Dismissible 是 Flutter 中用于实现可滑动删除或拖拽操作的一个有用的小部件。主要用于在用户对列表项或任何其他可滑动的元素执行删除或拖动操作时&#xff0c;提供一种简便的实现方式。 使…

sed 命令详解

1. 强大的编辑工具 sed是一个“作交互式的”面向字符流的编辑器。输入一般来自文件&#xff0c;但是也可以直接来自键盘。输出在默认情况下输出到终端屏幕上&#xff0c;但是也可以输出到文件中&#xff0c;sed通过解释脚本来工作&#xff0c;该脚本指定了将要执行的动作。 s…

【java】java学习笔记

1. 快速入门 // Hello类 public class Hello {// main方法public static void main(String[] args) {System.out.println("hello world!");} } 在控制台输入以下命令&#xff0c;对.java文件&#xff08;源文件&#xff09;进行编译操作&#xff0c;生成Hello.clas…