Решение с awk
может быть следующим:
awk '/Analytics code start/ { t=1; print; system("cat myanalytics.txt") }
/Analytics code end/ { t=0 }
t==0 { print } ' index.html
(Я сделал отступ в коде, чтобы повысить удобочитаемость, но он легко может быть однострочным)
Вкратце объяснение:
t == 0
всегда печатать текущую строку «Начало кода аналитики»
установить t == 1
], а затем распечатайте текущую строку и нужный файл с помощью системы ("cat myanalytics.txt")
t
равно 1
, поэтому текущая строка никогда не печатается, но когда текущая строка совпадает с "Конец кода аналитики"
, t
снова устанавливается на 0
, поэтому с этого момента следует печатать текущую строку. Примечание:
Это не приведет к редактированию вашего файла index.html
.
Для изменения индекса .html
вы можете:
перенаправить вывод из awk
во временный файл, а затем использовать команду типа mv
или cp
использовать ] sponge
из пакета moreutils
, как показано ниже:
awk '[.. команды, как указано выше ..]' index.html | sponge index.html
$ strace -f time
execve("/usr/bin/time", ["time"], [/* 66 vars */]) = 0
brk(0) = 0x84c000
...
Strace напрямую вызывает программу для трассировки. Он не использует оболочку для выполнения дочерних команд, если только дочерняя команда не является вызовом оболочки. Примерная последовательность событий здесь следующая:
strace
с аргументами strace, -f, time. / usr / bin / time
с аргументом «время». После шага 1 исходный процесс оболочки простаивает, ожидая выхода strace. Он ничего не делает активно. И даже если бы он что-то делал, strace не отслеживает это, поэтому его активность не будет отображаться в выводе strace.
Рассматриваемый fork
является частью механизма, запускающего strace
; он завершился к моменту начала трассировки.