通过sed命令替换批量文件中的字符串

Posted fengbingchun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过sed命令替换批量文件中的字符串相关的知识,希望对你有一定的参考价值。

      有时需要对目录下的多个文件中的字符串进行替换,如果手动逐个替换既费时又容易漏掉。此时可通过sed命令对指定目录下的所有文件进行操作。

      假如将命令写在一个sh文件中,名字为replace_string_in_all_files.sh,接受三个参数:第一个参数指定要操作的目录;第二个参数指定文件中的要替换的字符串;第三个参数指定替换后的字符串,如:

./replace_string_in_all_files.sh src csdn github

      第一种方式通过for,如下所示:

for file_name in $(find $1 -type f -name "*"); do
    #echo "file name: $file_name"
	sed -i "s/$2/$3/g" $file_name
done

      第二种方式,可通过exec将第一种方式写在一条语句中,如下:

find $1 -type f -name "*" -exec sed -i "s/$2/$3/g"  \\;

      第三种方式,也可通过xargs写在一条语句中,如下:

find $1 -type f -name "*" | xargs sed -i "s/$2/$3/g"

      注意: 如果需要替换的源字符串或目的字符串中包含反斜杠、星号、单引号等特殊字符,则需要使用另一个反斜杠(\\)对其进行转义。如果连续有多个特殊字符,则需要分别转义每个字符。如将src目录下的所有文件中的#include <opencv/core.hpp>替换为#include <opencv2/highgui.hpp>,则执行以下命令:

find src -type f -name "*" | xargs sed -i "s/opencv\\/core/opencv2\\/highgui/g"

     GitHubhttps://github.com/fengbingchun/Linux_Code_Test

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于通过sed命令替换批量文件中的字符串的主要内容,如果未能解决你的问题,请参考以下文章

shell :linux sed 批量替换字符串

Linux命令之sed-替换字符串

linux系统替换文件怎么替换

Linux命令之sed批量替换字符串操作

Linux批量查找与替换

linux sed 如何替换字符串中的反斜杠\