sed与awk(一)
Part1
sed和awk有很多共同点,原因之一是它们起源于相同的行编辑器–ed
对于ed,一些基本的逻辑:
-
每次处理一行。
-
交互式。通过一些命令同ed程序本身沟通。例如输入打印命令p来显示当前的行。(没有提示符)
-
默认情况下,一个命令只影响当前的行。
-
知道“pointer”处于文件中的哪一行很重要。要进行edit,就要将“pointer”移至想要编辑的行;而要
移到某行,就要指定它的地址(address)。一个address可以由一个行号、一个正则表达式或是“^$”这种
特殊位置符号组成。
对于ed,一些基本的命令:
-
d,删除
[address]/d
-
s,替换
[address]s/pattern/replacement/flag
Part2
sed是作为特殊目的的编辑器,用于专门执行脚本。sed与ed的不同点在于:
-
不能交互使用
-
面向字符流
-
默认情况下,sed的所有输入都会经过相应处理,并转为标准输出
-
输入文件本身不发生改变
sed的面向字符流的设定对于应用寻址的影响:
在ed中没有指定address的命令只影响当前行;而sed遍历文件,每次一行,这样每一行都成为当前行,而且每一行都应用这个命令。
结果是sed对文件中的每一行应用了未指定address的命令。也就是说,sed是隐式的全局命令
在ed中,使用寻址扩大命令影响的行数;在sed中,使用寻址限制受命令影响的行数
awk是作为可编程的编辑器而开发的,同sed一样,它也是面向字符流的,并且执行script。
awk延续了寻址的概念,但与sed的不同点在于:
-
awk废弃了行编辑器的命令集。它提供了仿效C语言的程序设计语言,例如,print语句取代p命令
-
提供了更多的方式来控制编辑器所做的事情。awk提供了表达式、条件、循环..
-
awk拆分每个输入行,并生成可用于脚本处理的独立的单词(字段)。这一点非常独特。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10亿数据,如何做迁移?
· 推荐几款开源且免费的 .NET MAUI 组件库
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· c# 半导体/led行业 晶圆片WaferMap实现 map图实现入门篇
· 易语言 —— 开山篇