如果文件中不存在该行,则仅在文件中添加该行

8
我想添加以下行:
nohup java -jar /mnt/fusion/nfs/labStats/LabInfoAutoLog.jar > /dev/null &

如果文件/etc/rc.d/rc.local不存在,您需要将内容添加到文件末尾。您可以使用Linux命令行完成此操作,例如使用grepsed命令,但是如果您对这些命令不熟悉可能会出现问题。目前,您正在使用echo命令进行添加,但是这只会导致内容重复添加。请注意保留HTML标记。
2个回答

15
假设您希望将其放在文件结尾处:
LINE="nohup java -jar /mnt/fusion/nfs/labStats/LabInfoAutoLog.jar > /dev/null &"
FILE=/etc/rc.d/rc.local
grep -q "$LINE" "$FILE" || echo "$LINE" >> "$FILE"

2

一个选项需要分两步完成:

grep -q "yourline" /path/file||sed -i '/..place../ a \the line' file

也可以使用awk来完成,

将所有行保存到数组中,在保存时如果找到该行,则退出。否则,将该行添加到END {}块的正确位置。

附注:您没有在文件中说明要将该行添加到哪里。


如果有比我更简洁的解决方案,请点赞。我认为他只是想要追加它。 - Alberto Zaccagni
他说目前使用的是echo,所以它将是最后一个(在sed中的美元符号)。 - Birei
@Birei 当我回答时,没有 echo 部分。 :( 但如果他使用了 echo,你是正确的。它应该到最后一行。 - Kent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接