使用 cat 将文本附加到其他文本前面

使用 cat 将文本附加到其他文本前面

我有一个名为 .env 的文件。

在这个文件中,我有变量 MYIP= ,在 MYIP= 前面我需要输入我的公共 IP。

我将这个 public 放在另一个名为 publicip.txt 的文件中。

我想使用 publicip 文件的输出并附加在 MYIP= 前面。

我尝试删除 MYIP= 并使用以下命令:

echo "MYIP=" | cat - publicip >> .env

但在文件中我看到了信息:MYIP= 177.XX.XX.XX

不是在同一条线上。谁能帮我?

答案1

有很多方法可以做到这一点。cat是不太常见的选择之一,但仍然完全可行。你几乎已经有了它,但echo有一个换行符。您可以使用标志来抑制它-n

echo -n "MYIP=" | cat - publicip >> .env

答案2

假设 .env 文件包含您想要保留的其他内容,一种方法是简单地用 perl 替换 MYIP 分配:

perl -pe 's/MYIP=.*/MYIP='`cat publicip`'/' -i .env

在使用文本工具(perlcatsedawk)的所有类似解决方案中,请注意,很容易使用 malformed 来破坏它们publicip,因此请确保您完全控制该文件。在安全的环境中小心使用此类单衬,否则它们几乎不可能正确固定并且事情可能会变得疯狂。

这种安全预防措施的一种方法是不.env就地修改文件,而是使用一些模板并合并/替换它们以创建输出文件。这不会帮助您进行恶意操作或错误(或没有可用空间等导致文件被截断的情况),但至少您不会丢失模板文件内容,因此您将能够恢复.env.

相关内容