Да, Gentoo Hardened использует fstack-protector-all
по умолчанию, поэтому вам не нужно передавать CFLAGS
самостоятельно, чтобы включить защиту от разбиения стека. Стандартные CFLAGS
для профиля Hardened включают:
CFLAGS="-fPIE -fstack-protector-all -D_FORTIFY_SOURCE=2" LDFLAGS="-Wl,-z,now -Wl,-z,relro"
Дополнительную информацию смотрите в этом разделе из Gentoo Hardened FAQ.
По вашему вопросу я только что создал этот text.txt. Если содержимое вашего файла отличается, сообщите нам об этом.
bash-4.1$ cat test.txt
#Match
---- test
hello
#Match
this is sample
adsafasf
asfas
fasf
#Match
------ funny
------ lots of fun
#Match
dafasf
adsfasf
bash-4.1$ awk '/#Match/ {flag=1} flag && /^---/ {flag=0;next} 1' test.txt
#Match
hello
#Match
this is sample
adsafasf
asfas
fasf
#Match
------ lots of fun
#Match
dafasf
adsfasf
Использованиеsed
:
sed -e '/#Match/ {n; /^---/d; }' infile
Команда n
считывает следующую строку ввода в пространство шаблонов и /^---/d
удаляет эту строку, если она начинается с ---
, только если предыдущая строка соответствует #Match
.
Ответ на пересмотренный вопрос:
sed -e '/#Match/,$ { /^---/d; }' infile
Как насчет
awk '/#Match/,EOF {if (/^---/) next} 1' file
Начиная со строки, соответствующей #Match
, пока переменная EOF
не станет истинной (, чего никогда не произойдет, поэтому = конец входного потока ), пропустить фактическую строку, если она соответствует трем (или больше )тире в начале.