使用 sed 编写 shell 脚本

发布于 2024-12-11 00:15:41 字数 240 浏览 0 评论 0原文

示例脚本如下所示:

#!/bin/bash
sed -i~ 's/user1/user2/g' myfile.txt

它在 myfile.txt 中将 user1 替换为 user2

我如何更改上面的脚本以获得脚本找到 user1 和 user1 的确认用user2替换它?

基本上,如果找不到 user1,它应该在命令提示符上给出警报消息。

谢谢!

Sample script is shown below:

#!/bin/bash
sed -i~ 's/user1/user2/g' myfile.txt

It replaces user1 with user2 in myfile.txt

How can I change above script to get confirmation that the script found user1 & replaced it with user2?

Basically, if it doesn't find user1, it should give an alert message on the command prompt.

Thanks!

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

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

发布评论

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

评论(2

羁客 2024-12-18 00:15:41

比较 after 的另一种方法是 grep before:

grep -q 'user1' myfile.txt && sed -i~ 's/user1/user2/g' myfile.txt || echo "user1 not there"

-q 意味着 grep 安静地运行,如果找到则返回成功,因此只有那时它才会继续进行替换。

An alternative to diffing after is to grep before:

grep -q 'user1' myfile.txt && sed -i~ 's/user1/user2/g' myfile.txt || echo "user1 not there"

The -q means that grep runs quietly and returns success if found, so then and only then will it go on to do the replacement.

魔法唧唧 2024-12-18 00:15:41

尝试 diff 工具:

fgrep -q 'user1'  myfile.txt 2>&1 1>/dev/null
if [ "$?" -eq 0 ]; then
   echo " user1 found."
fi
...
diff -q myfile.txt myfile.txt~ 2>&1 1>/dev/null
if [ "$?" -eq 1 ]; then
   echo " Match found & Replaced."
fi

Try diff tool:

fgrep -q 'user1'  myfile.txt 2>&1 1>/dev/null
if [ "$?" -eq 0 ]; then
   echo " user1 found."
fi
...
diff -q myfile.txt myfile.txt~ 2>&1 1>/dev/null
if [ "$?" -eq 1 ]; then
   echo " Match found & Replaced."
fi
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文