이 코드를 추가하고 싶어요
$cfg['Servers'][$i]['hide_db'] = '^(mysql|information_schema|performance_schema|phpmyadmin)$';
phpMyAdmin을 입력하세요구성 파일.inc.php문서앞으로철사
/**
* End of servers configuration
예상되는 결과:
$cfg['Servers'][$i]['hide_db'] = '^(mysql|information_schema|performance_schema|phpmyadmin)$';
/**
* End of servers configuration
*/
이것은 샘플입니다구성 파일.inc.php문서(https://github.com/phpmyadmin/phpmyadmin/blob/master/config.sample.inc.php)
내 현재 sed
코드는.쉿파일은
#!/bin/sh
PHPMATARGETDIR="/var/www/phpmyadmin"
sudo sed -i "s/\(\/\*\*\)/ #my code before;\n\1/" ${PHPMATARGETDIR}/config.inc.php
하지만 작동하지 않습니다. 열려 있는 모든 주석 블록 앞에만 추가됩니다.
이 코드를 사용하면 전혀 작동하지 않습니다.
sudo sed -i "s/\(\/\*\*\n\s*\* End of servers configuration\)/ #my code before;\n\1/" ${PHPMATARGETDIR}/config.inc.php
답변1
sed에서 이 작업을 수행할 수 있습니다.
sed "/\/\*\*/{
N
/ \* End of servers config/i\
\$cfg['Servers'][\$i]['hide_db'] = '^(mysql|information_schema|performance_schema|phpmyadmin)\$';
}" config.inc.php
귀하가 제공하는 내용에는 config.inc.php
실제로 다음이 포함되어 있습니다.
/*
* End of servers configuration
*/
아니요이중 별표 - /\/\*/
단순히 첫 번째 표현식과 두 번째 표현식을 만드는 것이 더 안전할 수 있습니다./End of servers config/
답변2
나에게 해결책은 Perl bash를 사용하는 것이 었습니다.여기에서그리고이 참조.
PHPMATARGETDIR="/var/www/phpmyadmin"
ADDPMACONFIG="\$cfg['Servers'][\$i]['hide_db'] = '^(mysql|information_schema|performance_schema|phpmyadmin|sys)\$';"
ADDPMACONFIG=$(printf '%s\n' "$ADDPMACONFIG" | sed -e 's/[]\/$*.|()^[]/\\&/g')
sudo perl -0777 -i -p -e "s/(\/\*\*\n\s+\*\s+End of servers configuration.*)/${ADDPMACONFIG}\n\1/" ${PHPMATARGETDIR}/config.inc.php