Home > OS >  How to remove quotes with grep and cut in one command
How to remove quotes with grep and cut in one command

Time:10-18

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)
  • Related