Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使awk抓取字符串位于第二组单引号之间_Linux_Bash_Awk - Fatal编程技术网

Linux 如何使awk抓取字符串位于第二组单引号之间

Linux 如何使awk抓取字符串位于第二组单引号之间,linux,bash,awk,Linux,Bash,Awk,请帮帮我,这快把我逼疯了 我有一个标准的Wp-config.php文件,我试图让awk在一行中只输出数据库名称、数据库用户名和密码,但无论我做什么尝试,它都会抛出无关的废话或语法错误 define('DB_NAME', 'pinkywp_wrdp1'); /** MySQL database username */ define('DB_USER', 'pinkywp_user1'); /** MySQL database password */ define('DB_PASSWORD',

请帮帮我,这快把我逼疯了

我有一个标准的Wp-config.php文件,我试图让awk在一行中只输出数据库名称、数据库用户名和密码,但无论我做什么尝试,它都会抛出无关的废话或语法错误

define('DB_NAME', 'pinkywp_wrdp1');

/** MySQL database username */
define('DB_USER', 'pinkywp_user1');

/** MySQL database password */
define('DB_PASSWORD', 'Mq2uMCLuGvfyw');
期望输出:

pinkywp_wrdp1 pinkywp_user1 Mq2uMCLuGvfyw
pinkywp_wrdp1 pinkywp_user1 Mq2uMCLuGvfyw
实际产量:

./dbinfo.sh: line 28: unexpected EOF while looking for matching `''
./dbinfo.sh: line 73: syntax error: unexpected end of file
使用GNU awk:

使用“
作为字段分隔符,如果当前行包含5列,则使用尾随空白打印第4列的内容

awk -F "'" 'NF==5 {printf("%s ",$4)}' file
输出:

pinkywp_wrdp1 pinkywp_user1 Mq2uMCLuGvfyw pinkywp_wrdp1 pinkywp_user1 Mq2uMCLuGvfyw 使用GNU awk:

使用“
作为字段分隔符,如果当前行包含5列,则使用尾随空白打印第4列的内容

awk -F "'" 'NF==5 {printf("%s ",$4)}' file
输出:

pinkywp_wrdp1 pinkywp_user1 Mq2uMCLuGvfyw pinkywp_wrdp1 pinkywp_user1 Mq2uMCLuGvfyw
一些
awk
解决方案:

1) 具有GNU风格:


2) 报价独立解决方案:

awk -F', ' '/define/{ 
                gsub(/^["\047]|["\047]\);$/, "", $2);
                printf "%s%s", (NR==1? "":" "), $2
            }
            END{ print "" }' file
输出(对于两种方法):


一些
awk
解决方案:

1) 具有GNU风格:


2) 报价独立解决方案:

awk -F', ' '/define/{ 
                gsub(/^["\047]|["\047]\);$/, "", $2);
                printf "%s%s", (NR==1? "":" "), $2
            }
            END{ print "" }' file
输出(对于两种方法):


你的密码在哪里?我们应该如何判断您做错了什么?错误消息表明您的脚本中有不匹配的引号。shellcheck.net应该会有帮助。因为堆栈溢出会对您隐藏关闭原因:寻求调试帮助的问题(“为什么此代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现该问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。您的代码在哪里?我们应该如何判断您做错了什么?错误消息表明您的脚本中有不匹配的引号。shellcheck.net应该会有帮助。因为堆栈溢出会对您隐藏关闭原因:寻求调试帮助的问题(“为什么此代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现该问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。看:。非常感谢Ed,这很有效。我需要如何修改这一行,以便从第一组单引号或仅仅一组单引号之间获取文本?例如,为了从读取
public$user='pinkygem_jmuser'的行中获取
pinkygem_jmuser
。不客气。想几秒钟,然后试试你想出来的,如果你想不出来,可以问一个后续问题。这是非常明显的,所以我希望你能马上得到它。嗨,Ed。我实际上是用
egrep'user | password | db\s'file | awk-F'“{print$(NF-1)}
完成的,但非常感谢你的帮助!祝你(情人节)愉快。当你使用awk时,你永远不需要grep。这只是同一个命令,但插入了新的值:
awk-F“''$1~/^public/&&$2~/^\$user/{printf”%s%s“,$2,(++cnt%3?OFS:ORS)}”
非常感谢Ed,这非常有效。我需要如何修改这一行,以便从第一组单引号或仅仅一组单引号之间获取文本?例如,为了从读取
public$user='pinkygem_jmuser'的行中获取
pinkygem_jmuser
。不客气。想几秒钟,然后试试你想出来的,如果你想不出来,可以问一个后续问题。这是非常明显的,所以我希望你能马上得到它。嗨,Ed。我实际上是用
egrep'user | password | db\s'file | awk-F'“{print$(NF-1)}
完成的,但非常感谢你的帮助!祝你(情人节)愉快。当你使用awk时,你永远不需要grep。这只是同一个命令,但插入了新的值:
awk-F“'“$1~/^public/&&$2~/^\$user/{printf”%s%s“,$2,(++cnt%3?OFS:ORS)}”
谢谢,这很有效!我需要如何修改这一行,以便从第一组单引号或仅仅一组单引号之间获取文本?例如,为了从一行中获取pinkygem_jmuser,该行读取public$user='pinkygem_jmuser'
echo“public$user='pinkygemjmujmuser';“|awk-F”“{print$2}”
谢谢,这很有效!我需要如何修改这一行,以便从第一组单引号或仅仅一组单引号之间获取文本?例如,为了从一行中获取pinkygem_jmuser,该行读取public$user='pinkygem_jmuser'
echo“public$user='pinkygemjmujmu user';“|awk-F”“{print$2}”