Лайнер awk one -:
awk -v patt="0" -v prev=1 '
$0 ~ patt {print NR - prev; prev = NR}
END {print NR + 1 - prev}
' file
awk '
/define\([ \t]*\047AUTH_KEY\047,/{
if (FNR==NR){ line=$0 }
else{ $0=line }
}
FNR!=NR
' /var/www/file1.txt /var/www/file2.php > /var/www/file2.php.new
mv /var/www/file2.php.new /var/www/file2.php
Выражение в квадратных скобках [ \t]
соответствует символу пробела или табуляции, *
соответствует шаблону ноль или более раз. \047
— восьмеричная одинарная кавычка '
.
Когда первый файл будет обработан, сохраните соответствующую запись в переменной line
. Когда второй файл будет обработан, замените совпадающую запись содержимым line
.
FNR!=NR
распечатывает записи второго файла.
Это может быть вариант:
# save the AUTH_KEY into a variable
$ key=$(awk -F"'" '/AUTH_KEY/ { print $4 }' file1.txt)
# use the variable to replace the same value in the other file
$ awk -F"'" -v val="'${key//\\/\\\\}'" 'BEGIN { OFS="" } $4 = val,$2 = "'\''"$2"'\''"' file2.php
$ cat file2.php | grep AUTH_KEY
define( 'AUTH_KEY', '{++X!upib~T.#C.&ykXDQpQ<nyrD7jadfu*adk^' );