如何使用shell脚本搜索和替换文件内容?

发布于 2024-12-14 14:21:12 字数 356 浏览 0 评论 0原文

几天前我开始学习shell脚本。我的情况是,我必须使用 shell 脚本搜索并替换文件中不同行中存在的内容。

例如,我在文件中提到了路径名:-

path = /home/test/db

我的名字是这样,

path = /home/test/db

在这里, 必须使用 shell 脚本将文件的指定行中的路径名“/home”替换为“/Second”。通过使用“sed”命令,我尝试并替换了文件的内容只有一行,但我正在努力替换不同行中存在的内容。我在 shell 脚本中使用“If”条件。请帮助我解决这个问题。

谢谢和问候,

I have started learning shell scripting a few days ago. My scenario is, i have to search and replace a content which exists in different lines in a file using shell script.

For Example, I have mentioned the path name in a file :-

path = /home/test/db

My name is so and

path = /home/test/db

Here,
The path name "/home" has to be replaced with "/Second" in specified lines of the file using shell script. By using "sed" command i have tried and replaced the content of the file has only one line but i am struggling with replacing which is present in different lines. I am using "If" condition in shell script.Please do help me in resolving this case.

Thanks and Regards,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

此刻的回忆 2024-12-21 14:21:12

我相信您错过了 sed 命令中的 g 选项。见下文

sed "s/find/replace/g" filename

I believe you missed the g option in your sed command. See below

sed "s/find/replace/g" filename
春花秋月 2024-12-21 14:21:12

sed -i 's/original/new/g' file.txt

说明:

sed = 流编辑器
-i =就地(即保存回原始文件)命令字符串:

s = 替代命令

原始 = 描述要替换的单词(或仅单词本身)的正则表达式

= 替换的文本

g = 全局(即替换所有内容,而不仅仅是第一次出现)

file.txt = 文件名

sed -i 's/original/new/g' file.txt

Explanation:

sed = Stream EDitor
-i = in-place (i.e. save back to the original file) The command string:

s = the substitute command

original = a regular expression describing the word to replace (or just the word itself)

new = the text to replace it with

g = global (i.e. replace all and not just the first occurrence)

file.txt = the file name

橘虞初梦 2024-12-21 14:21:12

下面提到的代码将搜索“search_folder_name”下的所有JS文件。它将在定义的文件夹中查找所有出现的“version_number”,并将其替换为定义的相应值。将下面提到的代码保存在 .sh 文件中,例如 test.sh

#!/bin/bash
versionNo=0.0.1
find ./search_folder_name/ -name \*.js -type f -print0 | while read -d 

\0' file; do echo "Processing $file" sed -i '' 's/{version_number}/'$versionNo'/g' $file done

The below mentioned code will search all JS files under "search_folder_name". It will find "version_number" for all occurrences in the defined folder and replace it with respective value defined. Save the below menioned code in .sh file say, test.sh

#!/bin/bash
versionNo=0.0.1
find ./search_folder_name/ -name \*.js -type f -print0 | while read -d 

\0' file; do echo "Processing $file" sed -i '' 's/{version_number}/'$versionNo'/g' $file done

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文