字符串中特定键的 Grep 值,由键:值对串联而成

Abh*_*ava 2 sed awk shell-script

我有一个字符串,它是由“,”分隔的“键”:“值”对的串联,例如-

KEY1:VALUE1, KEY2:VALUE2, KEY3:VALUE3
Run Code Online (Sandbox Code Playgroud)

从这个字符串中,我必须对一个特定的字符串进行 grep——比如说 KEY2——所以我们的命令的输出应该是 VALUE2。

pLu*_*umo 9

使用启用 PCRE 的grep实现:

grep -Po '(^|[ ,])KEY1:\K[^,]*'
Run Code Online (Sandbox Code Playgroud)

或egrep和cut:

grep -Eo '(^|[ ,])KEY2:[^,]*' | cut -d: -f2-
Run Code Online (Sandbox Code Playgroud)

对于这两种方法,值都不允许包含逗号。


如果你有适当的json,例如

{ "KEY1":"VALUE1", "KEY2":"VALUE2", "KEY3":"VALUE3" }
Run Code Online (Sandbox Code Playgroud)

你可以使用jq:

$ jq .KEY2
"VALUE2"
$ jq -r .KEY2
VALUE2
Run Code Online (Sandbox Code Playgroud)