добавить строку в файл, только если ее еще нет в файле

Я хочу добавить следующую строку:

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

до конца файла /etc/rc.d/rc.local если он еще не существует.

как я могу это сделать из linux командная строка? Я полагаю grep или sed будет работать, но я недостаточно знаком ни с тем, ни с другим, чтобы заставить его работать. Прямо сейчас я использую echo, но это только усиливает его снова и снова.

2 ответов


предполагая, что вы хотите его в конце файла:

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"

один вариант состоит из двух шагов:

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

также возможно сделать с awk,

сохранить все строки в массиве, во время сохранения, если строка была найдена, выйти. в противном случае добавьте строку в END{} блок в нужное место.

П. С. вы не сказали в файле, куда добавить эту строку.