добавить строку в файл, только если ее еще нет в файле
Я хочу добавить следующую строку:
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{}
блок в нужное место.
П. С. вы не сказали в файле, куда добавить эту строку.