Linux常用命令学习笔记:ed

1. 命令概述

  • 命令名称ed(英文全拼:editor)
  • 核心功能行编辑器,面向行的文本编辑器
  • 主要用途:脚本编辑、批处理文本操作、系统维护
  • 历史地位:Unix 系统最早的文本编辑器,是 visedgrep等工具的基础

2. 语法格式

ed [选项] [文件]

3. 常用选项

选项说明
-p设置命令提示符
-s静默模式,不显示字符数统计
-v详细模式
-G向后兼容模式
--help显示帮助信息
--version显示版本信息

4. 基本操作模式

(1) 命令模式

启动 ed后进入命令模式,输入命令操作文本:

ed file.txt
# 进入命令模式,显示字符数(如:123)

(2) 输入模式

使用 aic命令进入输入模式,输入文本内容:

a
这是第一行
这是第二行
.
# 输入 . 结束输入模式

5. 常用命令详解

(1) 基本编辑命令

命令说明
a在当前行后追加文本
i在当前行前插入文本
c替换当前行
d删除当前行
p打印当前行
n显示行号和内容
w保存文件
q退出编辑器
Q强制退出,不保存

(2) 行号操作

命令说明
.当前行
$最后一行
+n当前行后第 n 行
-n当前行前第 n 行
,所有行(1,$)
;当前行到最后一行(.,$)

(3) 查找和替换

命令说明
/正则表达式/向前查找
?正则表达式?向后查找
s/old/new/替换当前行
s/old/new/g全局替换当前行
g/正则表达式/命令对匹配行执行命令

(4) 文件操作

命令说明
e 文件名编辑新文件
r 文件名读取文件到当前行后
w 文件名写入文件
wq保存并退出
!命令执行 shell 命令

6. 常用实例详解

(1) 基本编辑

# 打开文件
ed file.txt

# 显示所有内容
1,$p

# 显示前5行
1,5p

# 显示最后5行
-5,$p

# 显示第10行
10p

(2) 插入和追加

# 在第1行前插入
1i
这是新插入的第一行
.

# 在最后一行后追加
$a
这是追加的最后一行
.

# 在第5行后追加
5a
这是第5行后追加的内容
.

(3) 删除和替换

# 删除第3行
3d

# 删除第5到第10行
5,10d

# 删除所有包含"test"的行
g/test/d

# 替换第2行
2c
这是替换后的第2行
.

# 替换所有包含"old"的行
g/old/c
这是替换后的内容
.

(4) 查找和替换

# 查找包含"hello"的行
/hello/

# 向后查找包含"world"的行
?world?

# 替换当前行的第一个"old"为"new"
s/old/new/

# 替换当前行的所有"old"为"new"
s/old/new/g

# 替换所有行的"old"为"new"
1,$s/old/new/g

# 替换第5到第10行的"old"为"new"
5,10s/old/new/g

(5) 文件操作

# 保存文件
w

# 保存并退出
wq

# 强制退出,不保存
Q

# 读取另一个文件到当前行后
r other.txt

# 执行 shell 命令
!ls -l

7. 实际应用场景

场景一:脚本编辑

# 编辑脚本文件
ed script.sh

# 在文件开头添加 shebang
1i
#!/bin/bash
.

# 在文件末尾添加内容
$a
echo "脚本执行完成"
.

# 保存并退出
wq

场景二:配置文件修改

# 修改配置文件
ed /etc/nginx/nginx.conf

# 查找并替换配置项
g/listen 80;/s/80/8080/

# 添加新的配置块
$a
server {
    listen 8080;
    server_name localhost;
}
.

# 保存并退出
wq

场景三:日志处理

# 处理日志文件
ed log.txt

# 删除空行
g/^$/d

# 删除时间戳列
1,$s/^[0-9:-]* //

# 只保留错误日志
g/ERROR/p

# 保存处理后的日志
w clean_log.txt

场景四:批量文本操作

# 批量替换多个文件
for file in *.txt; do
    ed -s "$file" <<EOF
1,\$s/old/new/g
w
EOF
done

# 批量删除空行
for file in *.log; do
    ed -s "$file" <<EOF
g/^$/d
w
EOF
done

8. 与其他命令的区别

命令特点适用场景
ed行编辑器,面向命令脚本编辑、批处理操作
vi屏幕编辑器,交互式交互式文本编辑
sed流编辑器,非交互式流式文本处理
nano简单易用的编辑器快速编辑小文件
emacs功能强大的编辑器编程、复杂编辑

9. 注意事项

  1. 命令模式ed始终在命令模式下,需要输入命令才能操作
  2. 输入模式:使用 aic进入输入模式,输入 .结束
  3. 行号表示.表示当前行,$表示最后一行
  4. 正则表达式:支持基本正则表达式
  5. 错误处理:命令错误会显示 ?,输入 h查看帮助

10. 常见问题解决

(1) 文件不存在

# 打开不存在的文件会创建新文件
ed newfile.txt

(2) 命令错误

# 输入错误命令显示 ?
?command

# 查看帮助
h

# 退出
q

(3) 批量操作

# 使用 here document 批量操作
ed -s file.txt <<EOF
1,\$s/old/new/g
w
EOF

(4) 静默模式

# 静默模式下不显示字符数统计
ed -s file.txt

核心要点总结

  • ed是 Unix 系统最古老的行编辑器,是许多文本工具的基础
  • 操作模式:命令模式(输入命令)和输入模式(输入文本)
  • 常用命令a(追加)、i(插入)、d(删除)、s(替换)、w(保存)、q(退出)
  • 实际应用:脚本编辑、配置文件修改、日志处理、批量文本操作
  • 历史意义:是 visedgrep等工具的前身,理解 ed有助于理解 Unix 文本处理哲学

ed命令虽然现在使用较少,但作为 Unix 文本处理的基础,具有重要的历史意义和教育价值。


作 者:南烛
链 接:https://www.itnotes.top/archives/343
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇