Существует много путей; я предложил бы использовать крон sepcial строка @reboot
.
$ crontab -e
@reboot /path/to/my/command.sh
Давайте сохраним это простым. Файлы подходят удобно к памяти, не потрудитесь читать их линию за линией или что-либо как этот. Perl -p
(выполните итерации по содержанию файла), переключатель и -0777
“хлебайте режим” (считайте целый файл сразу, не линию за линией), удобны.
Для действия на несколько файлов удобно использовать -i
(отредактируйте файлы на месте).
Для выполнения замены используйте s
оператор замены. См. perlre#Modifiers для объяснения модификаторов msx
.
perl -0777 -i.orig -p -e '
s[
^(\s+) # indentation
\Q$(document).ready(function() {\E\n
\s*(\w+)Init # function name
(\(((?:(?>[^()]+)|(?3))*)\)) # balanced parentheses
;\n\s*\}\);
][
${1}initPage(\x27$2\x27, $3);
]msx;
' **/*.js
**/*.js
соответствия все .js
файлы в текущем каталоге и его подкаталогах рекурсивно. Это работает из поля в zsh. При использовании удара добавить shopt -s globstar
к Вашему ~/.bashrc
.
(Непротестированный, необходимо будет, вероятно, настроить regexp немного.)
Вывод дампов к stdout, так не повредит Ваши файлы на месте.
#!/usr/bin/perl
use strict;
use warnings;
# Slurp our input...
my $text = do {local $/; <> };
# Extract the varying parts: foo and bar, for fooInit(bar)
my ($init_prefix, $init_opts) = $text =~ m/([a-zA-Z0-9]+)Init\(([^;]+;)/m;
# Construct the replacement: fooInit(bar) -> initPage('foo', bar)
my $replace_with = "initPage('$init_prefix', $init_opts";
# Target the text to replace...
my $to_replace = '\$\(document.*;';
# Perform the replacement;
$text =~ s/$to_replace/$replace_with/gs;
print $text;
Протестированный на все три из Ваших примеров. Добавление отступа не корректно для заменяющих строк, хотя код является правильным, и первая строка замены запустится в правильном месте.
$ perl replace.pl 1.js
script type="text/javascript">
initPage('editFile', opts);
</script>
{% endblock %}
$ perl replace.pl 2.js
<script type="text/javascript">
initPage('gallery', {
editTitleUrl: {{ csrf_url_for('gallery_editpictitle')|tojson|safe }},
delPicUrl: {{ csrf_url_for('gallery_delpic')|tojson|safe }}
});
</script>
$ perl replace.pl 3.js
<script type="text/javascript">
initPage('songHistory', {
dataURL: {{ url_for('stream_history_json')|tojson|safe }}
});
</script>
Что-либо можно сделать с: исключая режимом в vi может быть превращен в сценарий для редактора
ed
похож vi
но без всего, что wimpy раздражающее удобное для пользователя интерфейсное стоять на пути и замедление Вы.
Все шутки в сторону, ed
полезный инструмент для редактирования в виде сценария текстовых файлов.