小编典典

通过 Bash 命令在文本文件中查找和替换

all

对给定的输入字符串进行查找和替换的最简单方法是什么,比如在文件中abc替换为另一个字符串?XYZ``/tmp/file.txt

我正在编写一个应用程序并使用 IronPython 通过 SSH 执行命令——但我不太了解 Unix,也不知道要寻找什么。

我听说 Bash 除了作为命令行界面之外,还可以是一种非常强大的脚本语言。所以,如果这是真的,我假设你可以执行这样的操作。

我可以用 bash 来做吗,实现我的目标的最简单(一行)脚本是什么?


阅读 175

收藏
2022-03-03

共1个答案

小编典典

最简单的方法是使用 sed(或 perl):

sed -i -e 's/abc/XYZ/g' /tmp/file.txt

-i由于该选项,它将调用 sed 进行就地编辑。这可以从 bash 中调用。

如果您真的真的只想使用 bash,那么以下方法可以工作:

while IFS='' read -r a; do
    echo "${a//abc/XYZ}"
done < /tmp/file.txt > /tmp/file.txt.t
mv /tmp/file.txt{.t,}

这会遍历每一行,进行替换,然后写入临时文件(不想破坏输入)。最后的移动只是临时移动到原始名称。(为了稳健性和安全性,临时文件名不应该是静态的或可预测的,但我们不要去那里。)

对于 Mac 用户:

sed -i '' 's/abc/XYZ/g' /tmp/file.txt(请参阅下面的评论为什么)

2022-03-03