![使用 cat 将文本附加到其他文本前面](https://linux22.com/image/178154/%E4%BD%BF%E7%94%A8%20cat%20%E5%B0%86%E6%96%87%E6%9C%AC%E9%99%84%E5%8A%A0%E5%88%B0%E5%85%B6%E4%BB%96%E6%96%87%E6%9C%AC%E5%89%8D%E9%9D%A2.png)
我有一个名为 .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
在使用文本工具(perl
、cat
、sed
、awk
)的所有类似解决方案中,请注意,很容易使用 malformed 来破坏它们publicip
,因此请确保您完全控制该文件。在安全的环境中小心使用此类单衬,否则它们几乎不可能正确固定并且事情可能会变得疯狂。
这种安全预防措施的一种方法是不.env
就地修改文件,而是使用一些模板并合并/替换它们以创建输出文件。这不会帮助您进行恶意操作或错误(或没有可用空间等导致文件被截断的情况),但至少您不会丢失模板文件内容,因此您将能够恢复.env
.