sed和AWK流编辑器命令
![](https://img.haomeiwen.com/i1430582/a931839aff2dec1d.png)
sed在Linux和MAC中可以直接用,window中需要安装软件,而且还遇到报错。
`sed` 是一个流编辑器(stream editor),用于对文本文件进行基于行的编辑操作。它允许用户在文件中搜索、替换、删除和插入文本。`sed` 是 Unix 和类 Unix 系统(如 Linux)中的一个标准命令行工具。
`sed` 的基本语法如下:
```
sed [选项] '命令' 输入文件
```
其中,选项用于控制 `sed` 的行为,命令用于指定要执行的编辑操作,输入文件是要处理的文本文件。
`sed` 的一些常用命令:
- `s/旧文本/新文本/`:替换文本。将每一行中的第一个匹配的旧文本替换为新文本。
- `s/旧文本/新文本/g`:全局替换。将每一行中所有匹配的旧文本替换为新文本。
- `d`:删除行。删除匹配的行。
- `p`:打印行。打印匹配的行。
- `i`:插入行。在匹配的行之前插入新行。
- `a`:追加行。在匹配的行之后追加新行。
例如,要将文件 `file.txt` 中的所有 "apple" 替换为 "orange",可以使用以下命令:
```
sed 's/apple/orange/g' file.txt
```
这将输出替换后的文本,但不会修改原始文件。要将更改保存到原始文件,可以使用 `-i` 选项:
```
sed -i 's/apple/orange/g' file.txt
```
要将更改保存到新文件,可以使用重定向:
```
sed 's/apple/orange/g' file.txt > new_file.txt
```
AWK(Aho, Weinberger and Kernighan)是一种用于文本处理的编程语言,主要用于在文本文件中查找和处理模式。AWK 最初是在 1977 年由 Alfred Aho、Peter Weinberger 和 Brian Kernighan 开发的,目的是为了简化 Unix 系统中文本处理任务的编写。AWK 名字来源于三位作者的姓氏首字母。
AWK 的主要特点包括:
1. 简洁的语法:AWK 使用类似于 C 语言的语法,易于学习和使用。
2. 正则表达式支持:AWK 支持强大的正则表达式,可以方便地匹配和操作文本。
3. 内置函数库:AWK 提供了一系列内置函数,如数学运算、字符串处理等。
4. 管道和重定向支持:AWK 可以与其他 Unix 命令通过管道和重定向进行集成。
AWK 的基本工作原理是将输入文件(或标准输入)分割成记录(默认为一行),然后逐条记录进行处理。每条记录被分割成字段,可以使用字段分隔符(默认为空格或制表符)进行控制。AWK 提供了丰富的控制结构,如条件语句(if-else)、循环语句(for、while)等,以及数组数据结构。
AWK 的一些常见用途包括:
1. 文本搜索和替换。
2. 数据提取和报告生成。
3. 日志文件分析。
4. 数据转换和清洗。
下面是一个简单的 AWK 示例,用于计算文本文件中所有数字的总和:
```bash
awk '{ sum += $1 } END { print sum }' numbers.txt
```