我有一行带有三个引号的输出,我特别需要提取第二引用到变量中。例如,使用命令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}'