This is what I do currently:
pass1=$(grep DB_PASSWORD /home/user/public_html/wp-config.php | cut -d ' ' -f3)
# it echoes 'password' with start and end single quotes
pass=${pass1:1:-1}
# it remove single quotes from start and end
But I want to combine these two commands in a single go.
I tried some wrong commands which showed me the help of grep.
CodePudding user response:
You could use awk:
pass=$(awk -F"'" '/DB_PASSWORD/{print $4}' /home/user/public_html/wp-config.php)
I simply defined ' to be the field separator, which makes the password the 4th field.
CodePudding user response:
Using sed you can match the whole line and match the DB_PASSWORD field between the double quotes, and capture the inner text of the next field between double quotes in a capture group.
In the replacement use capture group 1.
pass=$(sed -En "s/^.*'DB_PASSWORD'[^']*'([^'] )'.*/\1/p" /home/user/public_html/wp-config.php)
Or ss your fields are separated by spaces, you could also get the 3rd field using awk, where \x27 matches a single quote which can be replaced by an empty string:
pass=$(awk '/DB_PASSWORD/{gsub("\x27", "", $3);print $3}' /home/user/public_html/wp-config.php)
