设为首页 加入收藏

TOP

sed与awk(一)
2023-07-23 13:40:09 】 浏览:17
Tags: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拆分每个输入行,并生成可用于脚本处理的独立的单词(字段)。这一点非常独特。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux文件描述符 下一篇Linux安装nginx 新版笔记

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目