[AIGC] awk 和 sed

在Unix系统中,有两种强大的用于文本操作的命令工具,它们就是awksed。这两个命令工具是每个Linux用户必备的知识之一,尤其对于需要进行文本处理或数据抽取的开发者来说,更加重要。
在实际开发过程中,我们常常需要处理各种数据、日志、配置文件,而这些工作,awksed就能够起到事半功倍的效果。


文章目录

  • Awk 和 Sed 简介
    • 深入分析和掌握awk和sed
      • awk初探
        • awk的基本语法
        • awk的工作原理
        • awk中的变量
      • sed 初探
        • sed基本语法:
        • sed工作原理:
        • sed 地址和地址范围
        • sed 命令
        • sed 应用实例

Awk 和 Sed 简介

Awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或者其它命令的输出。它支持用户自定义函数和动态正则表达式等强大功能。
Sed(stream editor)是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件所有的行处理完毕。因此,sed和管道(|)配合可以将数据进行加工,而和重定向配合可以把加工后的数据放到文件里。Sed可以处理磁盘文件里的数据,但它是把数据先读到内存中处理后,再屏幕上显示出来,而处理过程中,数据仍在磁盘文件里,而原来的文件内容并没有改变。

深入分析和掌握awk和sed

接下来我会写一篇详细的教程来深入学习和掌握awk和sed这两个强大的文本处理工具,会针对初学者使用一些简单清晰的例子来讲解它们。看完我相信你对Awk和Sed会有一个全面深入的了解。

awk初探

Awk是一种编程语言,用于在unix/linux下对文本和数据进行处理。根据这篇文章,我们可以看到以下一些Awk命令的基本示例:

awk的基本语法

一般地,awk命令的格式如下:

awk 'pattern {action}' file(s)

这里,awk从file(s)中读取行,如果pattern匹配,则执行action

awk的工作原理

当awk命令运行时,它将会进行以下步骤:

  1. 从一或多个文件(或stdin)中读取记录(默认情况下,一个记录就是一行)。
  2. 对每一条记录,从头到尾测试是否匹配每个模式。如果记录符合某个模式,则执行该模式所关联的动作。
  3. 继续处理输入文件,直到全部读取完毕。

例如,以下命令对于文件(file.txt)中每一行,如果该行匹配到模式(“3”),则打印出该行:

awk '/3/ {print $0}' file.txt
awk中的变量

Awk提供了很多内建变量来帮助我们进行操作,具体可以参阅这篇文章。例如,以下命令可以打印出文件(file.txt)的总行数:

awk 'END {print NR}' file.txt

其实当然,还有很多关于Awk的其他强大功能,像是数组和内置函数等等,但这就不在这篇指南的讨论范围之内了。更深入的学习,我推荐你去阅读这本书。

当探索和使用sed(流编辑器)时,以下是一些您需要了解的基本概念和语法。

sed 初探

sed基本语法:
sed <options> '<command>' <file>

其中,options是可选的,用于指定sed的一些选项;command是sed命令,用于指定要执行的操作;file是要处理的文件。

sed工作原理:

sed按行逐步读取输入文件,对每一行应用指定的命令,并输出结果。默认情况下,sed将原始文件内容直接写回到标准输出,也可以通过重定向将输出保存到文件中。

sed 地址和地址范围

在sed命令中,可以使用地址或地址范围来定位要操作的行。地址可以是行号、正则表达式、以及特殊的模式空间标记(如$表示最后一行)。

sed 命令

sed提供了多个命令,用于执行各种操作,如查找替换、删除行、添加行等。常用的sed命令包括:

  • s/pattern/replacement/:在每一行中查找匹配指定模式的内容,并替换为指定的内容。
  • d:删除匹配指定条件的行。
  • a:在指定条件的行后插入新行。
  • i:在指定条件的行前插入新行。
  • p:打印指定条件的行。
  • n:读取下一行,并从该行开始执行后续命令。
sed 应用实例

以下是一些sed的应用实例:

  • 替换文件中的文本:
sed 's/old_text/new_text/' file.txt
  • 删除文件中的空行:
sed '/^$/d' file.txt
  • 在指定行前插入新行:
sed '3i new_line' file.txt
  • 打印文件的特定行:
sed -n '5p' file.txt

这些只是sed的一些基本概念、语法和命令示例。sed具有非常强大的功能和灵活性,您可以根据实际需求使用更多的sed命令和选项进行文本处理和编辑操作。

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

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

相关文章

JavaScript中的hasOwnProperty方法详解

JavaScript中的hasOwnProperty方法详解 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 什么是hasOwnProperty方法&#xff1f; 在JavaScript中&#xff0c;h…

Wails 安装初体验

文章目录 Wails 安装说明1. 系统要求2. 安装步骤3. 构建应用 结论 Wails 安装说明 Wails 是一个用于构建桌面应用的 Go 框架&#xff0c;结合了现代前端技术。以下是安装步骤&#xff1a; 1. 系统要求 Go 1.16 或更高版本Node.js 和 npm可选&#xff1a;适用于 Windows、mac…

【机器学习】机器学习的重要方法——强化学习:理论,方法与实践

目录 一、强化学习的核心概念 二、强化学习算法的分类与示例代码 三.强化学习的优势 四.强化学习的应用与挑战 五、总结与展望 强化学习&#xff1a;理论&#xff0c;方法和实践 在人工智能的广阔领域中&#xff0c;强化学习&#xff08;Reinforcement Learning, RL&…

转自罗翔老师的毕业寄语(二)

其实我很想祝大家一帆风顺&#xff0c;可是我觉得这不现实。 智者说人这一生至少有三件事是无法避免的&#xff0c;一个是苦难&#xff0c;一个是邪恶&#xff0c;还有一个是人生的终点。所以真的愿我们每时每刻都在当下存储足够美好的记忆去对抗人生不期而至的苦楚&#xff0c…

基于源码详解ThreadPoolExecutor实现原理

个人博客地址 基于源码详解ThreadPoolExecutor实现原理 | iwts’s blog 内容拆分 这里算是一个总集&#xff0c;内容太多&#xff0c;拆分成几个比较重要的小的模块&#xff1a; ThreadPoolExecutor基于ctl变量的声明周期管理 | iwts’s blog ThreadPoolExecutor 工作线程…

模板方法模式在金融业务中的应用及其框架实现

引言 模板方法模式&#xff08;Template Method Pattern&#xff09;是一种行为设计模式&#xff0c;它在一个方法中定义一个算法的框架&#xff0c;而将一些步骤的实现延迟到子类中。模板方法允许子类在不改变算法结构的情况下重新定义算法的某些步骤。在金融业务中&#xff…

可信和可解释的大语言模型推理-RoG

大型语言模型&#xff08;LLM&#xff09;在复杂任务中表现出令人印象深刻的推理能力。然而&#xff0c;LLM在推理过程中缺乏最新的知识和经验&#xff0c;这可能导致不正确的推理过程&#xff0c;降低他们的表现和可信度。知识图谱(Knowledge graphs, KGs)以结构化的形式存储了…

基于lightgbm hyperopt的旋转机械故障诊断(Python)

前置文章&#xff1a; 将一维机械振动信号构造为训练集和测试集&#xff08;Python&#xff09; https://mp.weixin.qq.com/s/DTKjBo6_WAQ7bUPZEdB1TA 旋转机械振动信号特征提取&#xff08;Python&#xff09; https://mp.weixin.qq.com/s/VwvzTzE-pacxqb9rs8hEVw import…

Python变量的命名规则与赋值方式

第二章&#xff1a;Python 基础语法 第一节&#xff1a;变量的命名规则与赋值方式 2.1.1 引言 在编程中&#xff0c;变量是存储数据的基本单元。变量的命名和赋值是编程语言中表达和操作数据的基础。了解和遵循变量命名规则对于编写清晰、可维护的代码至关重要。 2.1.2 变量…

【linux】网络基础(1)

文章目录 网络基本概念网络的定义网络的类型局域网&#xff08;LAN&#xff09;广域网&#xff08;WAN&#xff09; 网络协议OSI七层模型TCP/IP模型TCP/IP模型的结构 网络传输的基本流程计算机与计算机之间的通信计算机的信息处理封装报头 网络基本概念 网络的定义 1.网络是指…

专题一: Spring生态初探

咱们先从整体脉络上看下Spring有哪些模块&#xff0c;重要的概念有个直观印象。 从Spring框架的整体架构和组成对整体框架有个认知。 Spring框架基础概念 Spring基础 - Spring和Spring框架组成 上图是从官网4.2.x获取的原图&#xff0c;目前我们使用最广法的版本应该都是5.x&am…

GitHub每日最火火火项目(6.30)

项目名称&#xff1a;modelscope / DiffSynth - Studio 项目介绍&#xff1a;该项目致力于让用户体验扩散模型的神奇魅力。扩散模型是一种具有广泛应用前景的技术&#xff0c;在图像生成、音频处理等领域展现出了强大的能力。通过DiffSynth - Studio&#xff0c;用户可以深入探…

Arrays.asList 和 java.util.ArrayList 区别

理解 Java 中的 Arrays.asList 和 java.util.ArrayList 的区别 在 Java 编程中&#xff0c;Arrays.asList 方法和 java.util.ArrayList 是两种常用的处理列表数据的方式。虽然它们在功能上看起来相似&#xff0c;但在内部实现和使用上有着本质的不同。本文将探讨这两种方式的区…

一区算法MPA|海洋捕食者算法原理及其代码实现(Matlab/Python))

Matlab/Python&#xff1a; 本文KAU将介绍一个2020年发表在1区期刊ESWA上的优化算法——海洋捕食者算法 (Marine Predators Algorithm&#xff0c;MPA)[1] 该算法由Faramarzi等于2020年提出&#xff0c;其灵感来源于海洋捕食者之间不同的觅食策略、最佳相遇概率策略、海洋记…

【Linux】IO多路复用——select,poll,epoll的概念和使用,三种模型的特点和优缺点,epoll的工作模式

文章目录 Linux多路复用1. select1.1 select的概念1.2 select的函数使用1.3 select的优缺点 2. poll2.1 poll的概念2.2 poll的函数使用2.3 poll的优缺点 3. epoll3.1 epoll的概念3.2 epoll的函数使用3.3 epoll的优点3.4 epoll工作模式 Linux多路复用 IO多路复用是一种操作系统的…

MCU复位时GPIO是什么状态?

大家一定遇到过上电或者复位时外部的MOS电路或者芯片使能信号意外开启&#xff0c;至此有经验的工程师就会经常关心一个问题&#xff0c;MCU复位时GPIO是什么状态&#xff1f;什么电路需要外部加上下拉&#xff1f; MCU从上电到启动&#xff0c;实际可分为复位前和复位后、初始…

【WPF】Windows系统桌面应用程序编程开发新手入门-打造自己的小工具

电脑Windows系统上的桌面程序通常是用Visual Studio 开发工具编写出来的&#xff0c;有两种开发方式供选择&#xff0c;一种是WindowForm&#xff0c;简称WinForm&#xff0c;另一种是Windows Presentation Foundation&#xff0c;简称WPF&#xff0c;这里将学习WPF项目。 文章…

大物3错题整理

平衡位置&#xff1a;在O点上的位置 相位&#xff1a; 当N很大的时候&#xff0c;wxwywz。因此&#xff0c;平均平动动能除以3&#xff0c;就是能量均分定理。 W F在x上的积分 Π时无单位 180&#xff0c;就是单位 1rad&#xff0c;rad就是单位 左手定则、右手定则、安培定…

C++模板类与继承

1&#xff09;模板类继承普通类&#xff08;常见&#xff09;。 2&#xff09;普通类继承模板类的实例化版本。 3&#xff09;普通类继承模板类。(常见) 4&#xff09;模板类继承模板类。 5&#xff09;模板类继承模板参数给出的基类&#xff08;不能是模板类&#xff09;。 示…

【抽代复习笔记】24-群(十八):循环群的两道例题

例1&#xff1a;证明&#xff1a; &#xff08;1&#xff09;三次交错群A3是循环群&#xff0c;它与(Z3,)同构&#xff0c;其中Z3 {[0],[1],[2]}&#xff1b; &#xff08;2&#xff09;G {1,i,-1,-i}&#xff0c;G上的代数运算是数的乘法&#xff0c;则G是一个循环群&…