sed命令详解与awk入门

需积分: 3 1 下载量 6 浏览量 更新于2024-09-16 收藏 9KB TXT 举报
"这是一份关于`sed`学习的笔记,摘自《sed and awk》一书,主要涵盖了`sed`的基本和高级用法,包括替换命令`s`、全局匹配`g`、命令行参数以及脚本文件的使用。笔记还简要提及了`awk`的相似性和工作方式,强调了在实际操作中需要注意的细节问题,如避免输出重定向到源文件导致的乱码等。" 在`sed`中,替换命令`s`是核心功能之一,用于在文本中查找并替换匹配的模式。语法是`/[address]/s/pattern/replacement/flag`。`address`可以指定要操作的行,如果省略则默认为当前行。`pattern`是需要匹配的文本,`replacement`是替换后的文本,`flag`是可选的操作标志,如`g`用于全局替换,即替换每行中所有匹配的实例。 关于`g`的用法,它在命令的不同位置有不同的含义。在`address`之后,`g`表示对所有匹配该地址的行进行替换。而在`s`命令的末尾,`g`表示替换每行中的每一个匹配项,而不仅仅是第一个。如果在`address`后面添加感叹号`!`,则表示不替换与`address`匹配的行,而替换其他行。 笔记中还提到了一个简化版的替换命令,如果`address`和`pattern`相同,可以写作`g/address/s//replacement/g`,简化了表达。 全局打印命令`g/regular-expr/p`会输出所有匹配`regular-expr`的行,这个功能类似于`grep`命令。 `sed`的简单使用形式包括在命令行直接指定单个或多个指令,如`sed [-e]'instruction' filename`,或者使用脚本文件`sed -f srcfile filename`来执行更复杂的操作。同时,笔记提醒我们,在保存输出时应避免将结果重定向回源文件,以防止数据混乱。 `-n`选项可以抑制默认的行输出,配合`p`使用时,仅打印经过`sed`处理的行,如`sed -n '/MA/ma/p' file`。 笔记中还简要介绍了`awk`,指出其工作原理与`sed`类似,但更侧重于处理结构化的数据。`awk`读取文件的每一行作为记录,并以空格或制表符分割字段。每个字段可以通过`$0`至`$n`来访问,其中`$0`表示整个记录,`$1`至`$n`表示记录中的各个字段。在`awk`中,指令需要包含在单引号中,并用大括号`{}`包裹。 整体来看,这份笔记提供了`sed`和`awk`的基础知识,对于理解和应用这两个强大的文本处理工具非常有帮助。