Моей первой мыслью было бы то, что если бы вы находились в среде, заботящейся о безопасности, вы могли бы захотеть ограничить количество входов в систему в разумных и понятных пределах, например, если вы знаете, что кто-то в среднем входит в систему только 3 раза в день, тогда день, когда они входят в систему 10 раз, является необычным и исключительным. Таким образом, это может указывать на подозрительную активность их входа в систему.
Я знаю, что есть много систем, которые люди создают в облачных средах, где использование API отслеживается и усредняется за периоды времени, и как только верхний предел использования API нарушается (за пределами их обычного использования ), они заблокирован для учетной записи / сильно ограничен, пока администратор не сможет убедиться, что ничего странного не происходит.
Сpcregrep
:
start_word='START'
pcregrep -Mo "(?s)\Q$start_word\E\h*(\{(?:[^{}]++|(?1))*+\})" < your-file
Со встроенными zsh
:
set -o rematchpcre
start_word='START'
[[ $(<your-file) =~ "(?s)\Q$start_word\E\h*(\{(?:[^{}]++|(?1))*+\})" ]] &&
print -r -- $MATCH
Они используют функцию рекурсивного регулярного выражения PCRE, где (?1)
выше вызывает регулярное выражение в первой паре (...)
.
Если у вас нет ни pcregrep
, ни zsh
, вы всегда можете прибегнуть к настоящей вещи (perl
, P
в PCRE):
perl -l -0777 -sne '
print $& if /\Q$start_word\E\h*(\{(?:[^{}]++|(?1))*+\})/s
' -- -start_word='START' < your-file
(обратите внимание, что все, кроме perl
, предполагают, что $start_word
не содержит\E
).
Простой метод грубой силы, который будет работать в любом awk в любой оболочке на всех компьютерах Unix:
$ cat tst.awk
s=index($0,"START") { $0=substr($0,s); f=1 }
f { rec = rec $0 RS }
END {
len = length(rec)
for (i=1; i<=len; i++) {
char = substr(rec,i,1)
if ( char == "{" ) {
++cnt
}
else if ( char == "}" ) {
if ( --cnt == 0 ) {
print substr(rec,1,i)
exit
}
}
}
}
$ awk -f tst.awk file
START{
some text
{
more text}
almost there
}