温馨提示×

centos怎么替换文本内容

小樊
54
2026-10-03 07:52:32
栏目: 智能运维

在 CentOS(或其他 Linux 系统)中,替换文本内容常见有几种方式,取决于你是替换单个文件、批量替换,还是命令行输出。下面按常见场景说明:


一、替换单个文件中的文本(推荐 sed)

1️⃣ 替换文件中所有匹配内容

sed -i 's/旧内容/新内容/g' 文件名

示例:

sed -i 's/foo/bar/g' test.txt

把 test.txt 中所有的 foo 替换为 bar

⚠️ 注意:

  • -i 会直接修改原文件
  • CentOS 的 sed 必须写 -i,不能像 macOS 那样 -i ''

2️⃣ 只替换第一次出现

sed -i 's/旧内容/新内容/' 文件名

3️⃣ 替换指定行

sed -i '5s/旧内容/新内容/' 文件名

只替换第 5 行


二、替换包含特殊字符的内容

如果内容里有 /、.、* 等,要用其他分隔符:

sed -i 's|/old/path|/new/path|g' file.txt

或使用转义:

sed -i 's/\/old\/path/\/new\/path/g' file.txt

三、批量替换多个文件

1️⃣ 当前目录下所有 .txt 文件

sed -i 's/旧内容/新内容/g' *.txt

2️⃣ 递归替换某目录下的文件

grep -rl '旧内容' /path/to/dir | xargs sed -i 's/旧内容/新内容/g'

示例:

grep -rl 'foo' /var/www | xargs sed -i 's/foo/bar/g'

四、替换前先备份(推荐)

sed -i.bak 's/旧内容/新内容/g' file.txt

会生成 file.txt.bak 备份文件


五、仅查看替换结果(不修改文件)

sed 's/旧内容/新内容/g' file.txt

六、交互式替换(手动确认)

vim file.txt
:%s/旧内容/新内容/gc
  • c = 每次替换前确认

七、使用 awk(适合复杂逻辑)

awk '{gsub(/旧内容/,"新内容")}1' file.txt > new.txt

如果你能告诉我:

  • 是 单个文件还是批量
  • 是否 包含特殊字符
  • 是否要 备份

我可以给你更精确的命令。

0 踩