首页 > 其他分享 >sed和awk之间有什么区别?[已关闭]

sed和awk之间有什么区别?[已关闭]

时间:2023-11-10 21:11:05浏览次数:37  
标签:Kernighan 关闭 区别 sed awk 数组 文本

内容来自 DOC https://q.houxu6.top/?s=sed和awk之间有什么区别?[已关闭]

  • awk和sed之间有什么区别?
  • sed和awk工具适用于哪些类型的应用场景?

sed是一种流编辑器。它按行处理字符流。它有一个简单的编程语言,包括类似goto的循环和简单的条件语句(除了模式匹配和地址匹配)。它实际上只有两个“变量”:模式空间和保持空间。脚本的可读性可能较差。数学运算在最好的情况下都非常麻烦。

不同版本的sed支持不同级别的命令行选项和语言特性。

awk以分隔字段为基础,按行处理。它具有更强大的编程结构,包括if/elsewhiledo/whilefor(C风格和数组迭代)。它完全支持变量和单维关联数组,还有(依我之见)笨拙的多维数组。数学运算类似于C语言。它有printf和函数。AWK中的“K”代表“Kernighan”,即《C程序设计语言》的作者“Kernighan and Ritchie”(也不能忘记Aho和Weinberger)。使用awk甚至可以编写学术抄袭检测器。

GNU awkgawk)有许多扩展功能,包括在最新版本中支持真正的多维数组。还有其他变种的awk,包括mawknawk

这两个程序都使用正则表达式来选择和处理文本。

在文本中存在模式时,我倾向于使用sed。例如,你可以使用以下方式(仍有改进空间)将文本中形如"负号后跟一串数字"(例如"-231.45")的所有负数替换为“会计括号”形式(例如"(231.45)"):

sed 's/-\([0-9.]\+\)/(\1)/g' inputfile

当文本看起来更像行和列(或者awk所称的"记录"和"字段")时,我会使用awk。如果我要在一个简单的逗号分隔文件的第三个字段上执行类似的操作,我可能会这样做:

awk -F, 'BEGIN {OFS = ","} {gsub("-([0-9.]+)", "(" substr($3, 2) ")", $3); print}' inputfile

当然,这些只是非常简单的示例,没有展示它们各自所能提供的全部功能范围。

标签:Kernighan,关闭,区别,sed,awk,数组,文本
From: https://www.cnblogs.com/xiaomandujia/p/17825065.html

相关文章

  • Xposed框架简单Hook实例:窥视“时间旅行”功能
    在我们的生活中,有时候我们希望能够改变一些事情,就像电影中的主人公可以通过时间旅行改变自己的命运一样。在Android系统中,Xposed框架就提供了一种类似的机会,让我们可以通过Hook技术改变应用程序的行为。本文将通过一个简单的例子来演示Xposed框架的基本使用,让我们一起来窥视一下“......
  • C++实现一键关闭桌面
    方法一:C++关闭桌面,explorer.exe#include<Windows.h>#include<TlHelp32.h>#include"resource.h"#pragmawarning(disable:4996)voidtaskkill(constchar*name){ HANDLEinfo_handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//拍摄系统中所有进......
  • panabit关闭硬件bypass
    panabit关闭硬件bypass使bypass可以当作网口正常使用机型panabit企业版,中间2个接口是硬件bypass的版本。步骤:1,接上显示器进入bios  2,CHipset3,South br bridge configuration4,After PowerOFF 5,Bypass1,bypass2关闭6,F10保存重启看效果如图 ......
  • Linux awk命令
    除了使用sed命令,Linux系统中还有一个功能更加强大的文本数据处理工具,就是awk。曾有人推测awk命令的名字来源于awkward这个单词。其实不然,此命令的设计者有3位,他们的姓分别是Aho、Weingberger和Kernighan,awk就取自这3为大师姓的首字母。和sed命令类似,awk命令也是......
  • 80端口被占用,如何关闭占用80端口的服务?
    要关闭占用80端口的服务,你可以按照以下步骤进行操作:1.确定哪个进程占用了80端口:运行以下命令来查找占用了80端口的进程的信息(在大多数Linux系统上可用):sudolsof-i:80这将显示占用80端口的进程的详细信息,包括进程ID(PID)和进程名称。2.结束占用80端口的进程:使用......
  • 网页端口80端口被占用,如何关闭占用80端口的服务?
    如果你的网页服务器监听了80端口并被占用,你可以按照以下步骤来关闭占用80端口的服务:1.确定占用80端口的进程:首先,需要找到占用80端口的进程。你可以在Windows上使用命令提示符或PowerShell,或在Linux上使用终端运行以下命令:在Windows上:netstat-ano|findstr:80在Linux上:......
  • Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionExcept
    在AndroidStudio的Helloword在增加了个部局XML内容后报错,如下错误:Causedby:org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException:Afailureoccurredwhileexecutingcom.android.build.gradle.internal.res.ParseLibraryResourcesTask$ParseResource......
  • Linux关闭防火墙命令
    1:查看防火状态systemctlstatusfirewalldservice iptables status2:暂时关闭防火墙systemctlstopfirewalldservice iptables stop3:永久关闭防火墙systemctldisablefirewalldchkconfigiptablesoff4:重启防火墙systemctlenablefirewalldserviceiptablesrestart ......
  • IDEA 关闭SpringBoot启动Logo/图标
     一、环境1、SpringBoot2.6.4 MavenPOM格式<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/></par......
  • 记录一次报错,程序启动,MySql自动关闭
    关于初级程序员,对于安装mysql,以及配置可能会报几次错有时候虽然进行第二次安装成功,但是第一次的残留文件还在,可能引起报错在这里记录一次我的报错程序启动导致Mysql自动断开,需要手动打开1、打开任务管理器,打开详细信息,发现界面有两个mysqld.exe如果你是使用单程序连接,或者你......