Skip to content

sed 命令

基本用法

替换文本

bash
#!/bin/bash

# 替换文本
sed 's/pattern/replacement/' file.txt

删除行

bash
#!/bin/bash

# 删除行
sed '/pattern/d' file.txt

常用选项

-i 选项

bash
#!/bin/bash

# 直接修改文件
sed -i 's/pattern/replacement/' file.txt

-e 选项

bash
#!/bin/bash

# 执行多个命令
sed -e 's/pattern1/replacement1/' -e 's/pattern2/replacement2/' file.txt

-n 选项

bash
#!/bin/bash

# 抑制自动输出
sed -n 'p' file.txt

替换操作

基本替换

bash
#!/bin/bash

# 替换第一个匹配
sed 's/pattern/replacement/' file.txt

# 替换所有匹配
sed 's/pattern/replacement/g' file.txt

替换特定行

bash
#!/bin/bash

# 替换第 5 行
sed '5s/pattern/replacement/' file.txt

# 替换第 5-10 行
sed '5,10s/pattern/replacement/' file.txt

替换匹配行

bash
#!/bin/bash

# 替换包含 pattern 的行
sed '/pattern/s/old/new/' file.txt

删除操作

删除行

bash
#!/bin/bash

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

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

# 删除包含 pattern 的行
sed '/pattern/d' file.txt

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

删除字符

bash
#!/bin/bash

# 删除特定字符
sed 's/character//g' file.txt

# 删除数字
sed 's/[0-9]//g' file.txt

插入操作

插入行

bash
#!/bin/bash

# 在第 5 行前插入
sed '5i\new line' file.txt

# 在第 5 行后追加
sed '5a\new line' file.txt

# 在包含 pattern 的行前插入
sed '/pattern/i\new line' file.txt

# 在包含 pattern 的行后追加
sed '/pattern/a\new line' file.txt

实用示例

示例1:批量替换

bash
#!/bin/bash

# 替换文件中的文本
sed -i 's/old_text/new_text/g' file.txt

# 替换多个文件中的文本
sed -i 's/old_text/new_text/g' *.txt

示例2:删除注释

bash
#!/bin/bash

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

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

示例3:格式化文本

bash
#!/bin/bash

# 删除行首空格
sed 's/^[ \t]*//' file.txt

# 删除行尾空格
sed 's/[ \t]*$//' file.txt

# 删除所有空格
sed 's/ //g' file.txt

示例4:数据转换

bash
#!/bin/bash

# 转换为大写
sed 's/.*/\U&/' file.txt

# 转换为小写
sed 's/.*/\L&/' file.txt

# 首字母大写
sed 's/\b\(.\)/\u\1/g' file.txt

最佳实践

1. 使用 -i 选项

bash
# 好的做法
sed -i 's/pattern/replacement/g' file.txt

# 不好的做法
sed 's/pattern/replacement/g' file.txt > temp.txt
mv temp.txt file.txt

2. 使用引号

bash
# 好的做法
sed 's/pattern/replacement/g' file.txt

# 不好的做法
sed s/pattern/replacement/g file.txt

3. 使用正则表达式

bash
# 好的做法
sed 's/[0-9]/number/g' file.txt

# 不好的做法
sed 's/0/number/g; s/1/number/g; s/2/number/g' file.txt

总结

sed 命令的关键点:

  1. 基本用法sed 'command' file.txt
  2. 常用选项-i-e-n
  3. 替换操作s/pattern/replacement/
  4. 删除操作/pattern/d
  5. 插入操作i\a\
  6. 实用示例:批量替换、删除注释、格式化文本、数据转换
  7. 最佳实践:使用 -i 选项、使用引号、使用正则表达式

下一节我们将学习 awk 命令的使用。