仅在文件不在文件中时才将行添加到文件中

时间:2013-07-19 14:00:10

标签: linux sed grep

我想添加以下行:

nohup java -jar /mnt/fusion/nfs/labStats/LabInfoAutoLog.jar > /dev/null &

到文件/etc/rc.d/rc.local的末尾(如果它尚不存在)。

如何从 linux 命令行执行此操作?我认为grepsed会起作用,但我不熟悉其中任何一个都可以使用它。现在我使用echo,但这只是一遍又一遍地添加它。

3 个答案:

答案 0 :(得分:13)

假设你想要它在文件的末尾:

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"

答案 1 :(得分:2)

一个选项是两个步骤:

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

也可以用awk做,

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

P.S。 您没有告诉文件,在哪里添加该行。

答案 2 :(得分:0)

使用contains.sh

./contains.sh /etc/rc.d/rc.local "LabInfoAutoLog.jar" \
    "nohup java -jar /mnt/fusion/nfs/labStats/LabInfoAutoLog.jar > /dev/null &" root

如果您已经以root用户身份运行,则不需要最后一个参数。