提取输出行中第二个带引号的字符串

提取输出行中第二个带引号的字符串

我有一行带有三个引号的输出,我特别需要提取第二引用到变量中。例如,使用命令cmd | grep tokens,我得到以下输出:

输出

"abcde", "12345", "zyxwv"

我需要离开12345那里。我得到的最接近的是添加| cut '\"' -f2到命令中,但返回“abcde”。我怎样才能得到第二个报价而不是第一个报价?

答案1

只是提高你的cut指挥能力。您指定分隔符,以便"计算每个 之前的字段"

例如

在第一个之前"没有什么是这样的:

$ echo "\"abcde\", \"12345\", \"zyxwv\"" | cut -d \" -f 1
[empty]

在第二个"之前abcde

$ echo "\"abcde\", \"12345\", \"zyxwv\"" | cut -d \" -f2
abcde

在第三个之前",

$ echo "\"abcde\", \"12345\", \"zyxwv\"" | cut -d \" -f3
, 

所以你的预期输出将是第四个

$ echo "\"abcde\", \"12345\", \"zyxwv\"" | cut -d \" -f4
12345

我希望转义反斜杠不会打扰你

答案2

这是您想要实现的目标吗?

variable=$(cmd | grep tokens | cut -d',' -f 2 | sed 's/ //')

答案3

我们可以简单地使用 awk 来完成

例如:

[用户@test ~]$ echo "abcde", "12345", "zyxwv" | awk -F"," '{打印 $2}' 12345

如果输出来自 cmd 那么

变量='<cmd> | awk -F"," '{print $2}'

相关内容