来自地图对象的 Grep 字符串

代码我的生活

我正在尝试提取客户端对象中的每个用户名值并存储在数组(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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章