从Bash命令中查找并替换文本文件中的内容
从Bash命令中查找并替换文本文件中的内容
如何在文件 /tmp/file.txt
中查找并替换给定的输入字符串(例如abc
),并用另一个字符串(例如XYZ
)替换?
我正在编写一个应用程序,并使用IronPython通过SSH执行命令 - 但我对Unix并不熟悉,不知道要查找什么。
我听说Bash除了是一个命令行接口外,还可以成为一个非常强大的脚本语言。那么,如果这是真的,我想你可以执行这些操作。
我可以使用bash吗?实现我的目标最简单(一行)的脚本是什么?
admin 更改状态以发布 2023年5月19日
最简单的方法是使用sed(或perl):
sed -i -e 's/abc/XYZ/g' /tmp/file.txt
这将调用sed执行一个就地编辑,因为选项-i
。可以从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
(请参见下面的评论原因)