对给定的输入字符串进行查找和替换的最简单方法是什么,比如在文件中abc替换为另一个字符串?XYZ``/tmp/file.txt
abc
XYZ``/tmp/file.txt
我正在编写一个应用程序并使用 IronPython 通过 SSH 执行命令——但我不太了解 Unix,也不知道要寻找什么。
我听说 Bash 除了作为命令行界面之外,还可以是一种非常强大的脚本语言。所以,如果这是真的,我假设你可以执行这样的操作。
我可以用 bash 来做吗,实现我的目标的最简单(一行)脚本是什么?
最简单的方法是使用 sed(或 perl):
sed -i -e 's/abc/XYZ/g' /tmp/file.txt
-i由于该选项,它将调用 sed 进行就地编辑。这可以从 bash 中调用。
-i
如果您真的真的只想使用 bash,那么以下方法可以工作:
while IFS='' read -r a; do echo "${a//abc/XYZ}" done < /tmp/file.txt > /tmp/file.txt.t mv /tmp/file.txt{.t,}
这会遍历每一行,进行替换,然后写入临时文件(不想破坏输入)。最后的移动只是临时移动到原始名称。(为了稳健性和安全性,临时文件名不应该是静态的或可预测的,但我们不要去那里。)
sed -i '' 's/abc/XYZ/g' /tmp/file.txt(请参阅下面的评论为什么)
sed -i '' 's/abc/XYZ/g' /tmp/file.txt