当前位置: 首页 > ds >正文

Linux 中替换文件中的某个字符串

如果你想在 Linux 中替换文件中的某个字符串,可以使用以下命令:


1. 基本替换(sed 命令)

sed -i 's/原字符串/新字符串/g' 文件名

示例:将 file.txt 中所有的 old_text 替换成 new_text

sed -i 's/old_text/new_text/g' file.txt

选项说明

  • -i:直接修改文件(不加 -i 则只输出到终端,不修改文件)。
  • s/:表示替换(substitute)。
  • g:全局替换(否则每行只替换第一个匹配项)。

2. 替换时忽略大小写(sed + I 选项)

sed -i 's/原字符串/新字符串/gI' 文件名

示例:替换 hellohi,并忽略大小写(HelloHELLO 也会被替换)

sed -i 's/hello/hi/gI' file.txt

3. 替换时使用变量(避免特殊字符冲突)

如果替换的内容包含 / 或其他特殊字符,可以改用 |# 作为分隔符:

sed -i "s|原字符串|$变量名|g" 文件名

示例:用变量 $new_ip 替换文件中的 192.168.1.1

new_ip="10.0.0.1"
sed -i "s|192.168.1.1|$new_ip|g" config.txt

4. 替换指定行(sed 限定行号)

sed -i '行号s/原字符串/新字符串/' 文件名

示例:仅在第 5 行替换 foobar

sed -i '5s/foo/bar/' file.txt

5. 替换前备份原文件(sed -i.bak

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

这会生成 file.txt.bak 备份文件,再修改 file.txt


6. 使用 awk 替换

awk '{gsub(/原字符串/, "新字符串"); print}' 原文件 > 新文件

示例:替换 data.txt 中的 appleorange,并保存到 new_data.txt

awk '{gsub(/apple/, "orange"); print}' data.txt > new_data.txt

7. 使用 perl 替换

perl -pi -e 's/原字符串/新字符串/g' 文件名

示例:替换 errorwarning

perl -pi -e 's/error/warning/g' log.txt

8. 替换多个文件(find + sed

find /路径 -type f -name "*.txt" -exec sed -i 's/old/new/g' {} \;

示例:替换 /etc/nginx/ 目录下所有 .conf 文件中的 example.commysite.com

find /etc/nginx/ -type f -name "*.conf" -exec sed -i 's/example.com/mysite.com/g' {} \;

9. 交互式替换(vim 命令)

vim 文件名
:%s/原字符串/新字符串/g
:wq

示例:在 vim 中替换 catdog

vim animals.txt
:%s/cat/dog/g
:wq

总结

需求命令
基本替换sed -i 's/old/new/g' file
忽略大小写sed -i 's/old/new/gI' file
使用变量`sed -i "s
替换指定行sed -i '5s/old/new/' file
备份原文件sed -i.bak 's/old/new/g' file
多文件替换find /path -name "*.ext" -exec sed -i 's/old/new/g' {} \;
http://www.xdnf.cn/news/12668.html

相关文章:

  • 如何调控gpu训练参数
  • 优选算法第十二讲:队列 + 宽搜 优先级队列
  • 深度学习在RNA分子动力学中的特征提取与应用指南
  • 每日互动方毅:数据要素价值在于流转,用好AI的前提是用好数据 | 爱分析访谈
  • [蓝桥杯]版本分支
  • AI 模型分类全解:特性与选择指南
  • 鸿蒙开发:loading动画的几种实现方式
  • 欧拉定理和费马定理
  • 人工智能会导致人类毁灭吗
  • 所有的Linux桌面环境
  • 从微积分到集合论(1630-1910)(历史简介)——第4章——现代积分理论的起源(Thomas Hawkins)
  • 13.MySQL用户管理
  • 【C/C++】不同防止头文件重复包含的措施
  • 【同数增位累加2+22+222+2222】2022-4-15
  • 广目软件GM DC Monitor
  • 驱控边界在哪里?知名舵机品牌伟创动力CNTE2025展带来答案
  • c# List<string>.Add(s) 报错:UnsupportedOperationException
  • antd-vue - - - - - table实现滚动加载数据
  • 什么是上下文切换?代价在哪里?
  • C++ if语句完全指南:从基础到工程实践
  • API是什么意思?如何实现开放API?
  • 开源语义分割工具箱mmsegmentation基于Lovedata数据集训练模型
  • 你如何确保监控系统的可用性?
  • python算法-移动零盛最多的水--Day021
  • WinCC学习系列-变量模拟器(WinCC TAG Simulator )
  • Wan2.1环境的安装,以及使用产品图片合成展示视频
  • 嵌入式主板详解与选购指南
  • 关于dropbear ssh服务
  • 如何让其他品牌更难转化走我们的用户?
  • thinkphp-queue队列随笔