Если вам нужно что-то простое, но не блокирующее, добавьте следующее в /etc/rc.local:
( sleep 60 && /path/to/command_or_script [opts] ) &
Этого легко добиться с помощью команды sed
.
Просто введите:
sed 's/true/false/' file > newfile
Вы можете использовать
sed -e 's|<tag1>false</tag1>|<tag1>true</tag1>|g' -i file
, хотя я рекомендую отредактировать копию файла,
sed -e 's|<tag1>false</tag1>|<tag1>true</tag1>|g' file > newfile
и использовать less
, чтобы проверить, приемлемо ли новое содержимое; т.е.
less newfile
Отредактировано: обратите внимание на модификатор g
в конце шаблона. Это необходимо, если на строке может быть более одного совпадения. Если присутствует g
, это означает, что все совпадения в строке заменяются. Кроме того, вместо полных тегов вы можете использовать только
sed -e 's|>false<|>true<|g' file > newfile
или, возможно,
sed -e 's|>[Ff]alse<|>true<|g' file > newfile
, что изменяет оба > false <
и > False <
на > true <
.
Вы можете использовать diff
для сравнения двух файлов после использования одной из команд выше. Один из вариантов -
diff --side-by-side file newfile | less
, но он не работает, если строки очень длинные. Обычно используется формат «unified diff» ,
diff -u file newfile | less
где строки, начинающиеся с -
, взяты из файла
, строки начинаются с +
из newfile
, и строки, начинающиеся с пробела, являются общими для обоих.
Если вы хотите заменить только точные вхождения от
<tag1>true</tag1>
до
<tag1>false</tag1>
, вы можете использовать
sed -r 's@<(tag1)>true</\1>@<\1>false</\1>@g' infile >outfile
или
sed -ri 's@<(tag1)>true</\1>@<\1>false</\1>@g' file
, если вы не хотите записывать измененные данные в новый файл.