我正在尝试提取客户端对象中的每个用户名值并存储在数组(bash)中。但是,即使通过 regex101.com 中的匹配,grep 也无法匹配
//a.txt
username = "fakeuservalue"
clients = [
{
username = "user1"
},
{
username = "user2"
}
]
x=$(cat a.txt | grep -e 'username\s+=\s+\"(.*)\"')
echo $x
有什么线索吗?我还尝试在“clients”对象上添加另一个检查,以便跳过检索“fakeuservalue”。
您可以使用
x=$(sed -n '/^clients = \[/,/^]$/p' a.txt | sed -n 's/.*username *= *"\(.*\)".*/\1/p')
查看在线演示:
#!/bin/bash
s='username = "fakeuservalue"
clients = [
{
username = "user1"
},
{
username = "user2"
}
]'
sed -n '/^clients = \[/,/^]$/p' <<< "$s" | sed -n 's/.*username *= *"\(.*\)".*/\1/p'
输出:
user1
user2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句