Linux三剑客之sed

sed - 流编辑器

基本语法

sed [选项] '命令' [输入文件]

sed [选项] -f 脚本文件 [输入文件]

常用选项

-n # 只输出处理过的行

-e # 指定多个编辑命令

-f # 从文件读取sed脚本

-i # 直接修改源文件(危险但实用)

-i.bak # 修改前备份原文件

-r # 使用扩展正则表达式

sed命令详解

1. 替换命令 (s)

# 基本替换
sed 's/old/new/' file.txt # 每行第一次出现

sed 's/old/new/g' file.txt # 全局替换

sed 's/old/new/2' file.txt # 每行第二次出现

sed 's/old/new/ig' file.txt # 忽略大小写全局替换

# 使用不同分隔符
sed 's|/usr/local|/opt|g' file.txt # 使用|代替/

sed 's#/home/#/data/#g' file.txt # 使用#代替/

# 引用匹配内容
sed 's/\([0-9]\)\.\([0-9]\)/\2.\1/' file.txt # 交换数字

sed -r 's/([0-9])\.([0-9])/\2.\1/' file.txt # 扩展正则简化

2. 删除命令 (d)

sed '5d' file.txt # 删除第5行

sed '1,10d' file.txt # 删除1-10行

sed '/^#/d' file.txt # 删除注释行

sed '/^$/d' file.txt # 删除空行

sed '/^#/d; /^$/d' file.txt # 删除注释和空行

3. 打印命令 (p)

sed -n '1,5p' file.txt # 只打印1-5行

sed -n '/error/p' file.txt # 只打印包含error的行

sed -n '10,20p; 30,40p' file.txt # 打印多个范围

4. 插入/追加/更改 (i/a/c)

# 插入(在指定行前)
sed '2i\插入的内容' file.txt

sed '/pattern/i\插入的内容' file.txt

# 追加(在指定行后)
sed '2a\追加的内容' file.txt

sed '$a\文件末尾追加' file.txt

# 更改(整行替换)
sed '5c\新的第5行内容' file.txt

5. 转换命令 (y)

sed 'y/abc/ABC/' file.txt # 字符转换 a→A, b→B, c→C

高级用法

# 多个命令组合
sed -e 's/foo/bar/g' -e '/^#/d' file.txt

sed 's/foo/bar/g; /^#/d' file.txt

# 保存到变量
new_text=$(sed 's/old/new/g' file.txt)

# 处理范围
sed '/start/,/end/d' file.txt # 删除start到end之间的行

sed '/start/,/end/s/foo/bar/g' file.txt # 在范围内替换

# 保持空间操作(复杂编辑)
sed '1!G;h;$!d' file.txt # 反转文件行序

实用示例

# 配置文件处理
sed -i '/^#.*PasswordAuthentication/s/^#//' sshd_config # 取消注释

sed -i 's/^#\?Port.*/Port 2222/' sshd_config # 修改端口

# 日志处理
sed -n '/2023-10-01 14:/,/2023-10-01 15:/p' access.log # 提取时间范围

# 文本清理
sed 's/\s\+$//' file.txt # 删除行尾空格

sed 's/\t/ /g' file.txt # 制表符转空格

# CSV处理
sed 's/,/\t/g' data.csv > data.tsv # CSV转TSV

相关推荐
Rockbean2 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
蝎子莱莱爱打怪2 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
茶杯梦轩2 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
崔小汤呀2 天前
最全的docker安装笔记,包含CentOS和Ubuntu
linux·后端
何中应2 天前
vi编辑器使用
linux·后端·操作系统
何中应2 天前
Linux进程无法被kill
linux·后端·操作系统
何中应2 天前
rm-rf /命令操作介绍
linux·后端·操作系统
何中应2 天前
Linux常用命令
linux·操作系统
葛立国2 天前
从 / 和 /dev 说起:Linux 文件系统与挂载点一文理清
linux
海天鹰3 天前
【免费】PHP主机=域名+解析+主机
服务器