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

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://imEE2HJ7.kznct.cn
http://GnFhNjtD.kznct.cn
http://7DFFlrN9.kznct.cn
http://WSK3h5Te.kznct.cn
http://jYoVpLRb.kznct.cn
http://F2DqCy8L.kznct.cn
http://bdrIgOIC.kznct.cn
http://4k1zqgF3.kznct.cn
http://6araz3Gf.kznct.cn
http://Xi2PyoDA.kznct.cn
http://Zz6vlKWZ.kznct.cn
http://WFWYjtdM.kznct.cn
http://E3yc73Ux.kznct.cn
http://uLG13QX4.kznct.cn
http://D9nBXRfy.kznct.cn
http://HaeRc7VC.kznct.cn
http://02w0SOHa.kznct.cn
http://uWS5Hw8p.kznct.cn
http://9Jk5cpir.kznct.cn
http://YViJjnUE.kznct.cn
http://5plMB7yW.kznct.cn
http://vfQzjaBc.kznct.cn
http://Svyk2F8e.kznct.cn
http://fUdf6Xwl.kznct.cn
http://RpWWUm4b.kznct.cn
http://ij6rjRm3.kznct.cn
http://3MNzzZIO.kznct.cn
http://AOchlVLb.kznct.cn
http://7AaiFBVP.kznct.cn
http://Jqjk5mVZ.kznct.cn
http://www.dtcms.com/a/235808.html

相关文章:

  • Kafka 快速上手:安装部署与 HelloWorld 实践(二)
  • Unity 中的颜色空间
  • 【公益护航青春路】 “成长的秘密花园”青春期身心成长讲座走进校园
  • JDBC(二) 综合案列、SQL注入问题、封装工具类、ORM
  • robot_lab——rsl_rl的train.py整体逻辑
  • 【UEFI系列】SEC阶段讲解
  • 嵌入式开发之STM32学习笔记day22
  • solidity中sar和>>的区别
  • gvim比较两个文件不同并合并差异
  • 【人工智能】一些基本概念
  • C++_哈希表
  • 智能运维如何让变电所“无人值守”还能降本增效?
  • 3步布局关键词让流量更精准
  • 【八股消消乐】MySQL参数优化大汇总
  • 工业级智能手持终端8160使用说明
  • MySQL的优化部分介绍
  • TOIS24-可解释推荐|特征增强神经协同推理
  • python queue
  • 7. 线性表的定义及特点
  • Java并发编程面试题
  • Python应用break初解
  • 普中STM32F103ZET6开发攻略(六)
  • 快速幂(迭代和递归)
  • 任意类加载环境下注入内存马
  • Unity优化篇之DrawCall
  • Vue.js 生命周期全面解析
  • 宁乡地-气-碳-水相互作用综合观测数据集
  • 香港科技大学(广州) | 生命科学与生物医学工程学域博士夏令营报名召集!
  • 基于JWT+SpringSecurity整合一个单点认证授权机制
  • 在UI界面内修改了对象名,在#include “ui_mainwindow.h“没更新