来自地图对象的grep string

发布于 2025-01-22 12:50:26 字数 333 浏览 4 评论 0原文

我正在尝试在客户端对象中提取每个用户名值并存储在数组(bash)中。 都无法匹配吗

//a.txt
username = "fakeuservalue"

clients = [
  {
    username = "user1"
  },
  {
    username = "user2"
  }
]


x=$(cat a.txt | grep -e 'username\s+=\s+\"(.*)\"')
echo $x

但是,GREP即使在Regex101.com中匹配的任何线索 ?我还尝试在“客户端”对象上添加另一个检查检查,以便跳过检索“ FakeUservalue”。

I'm trying to extract each username value in clients object and store in array (bash). However, grep failed to match even through matched in regex101.com

//a.txt
username = "fakeuservalue"

clients = [
  {
    username = "user1"
  },
  {
    username = "user2"
  }
]


x=$(cat a.txt | grep -e 'username\s+=\s+\"(.*)\"')
echo $x

Any clues? I'm also try to add another check on "clients" object so that skip retrieve "fakeuservalue".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我要还你自由 2025-01-29 12:50:26

您可以使用

x=$(sed -n '/^clients = \[/,/^]$/s/.*username *= *"\(.*\)".*/\1/p' a.txt)

在线演示

#!/bin/bash
s='username = "fakeuservalue"

clients = [
  {
    username = "user1"
  },
  {
    username = "user2"
  }
]'
sed -n '/^clients = \[/,/^]$/s/.*username *= *"\(.*\)".*/\1/p' <<< "$s"

输出:

user1
user2

You can use

x=$(sed -n '/^clients = \[/,/^]$/s/.*username *= *"\(.*\)".*/\1/p' a.txt)

See the online demo:

#!/bin/bash
s='username = "fakeuservalue"

clients = [
  {
    username = "user1"
  },
  {
    username = "user2"
  }
]'
sed -n '/^clients = \[/,/^]$/s/.*username *= *"\(.*\)".*/\1/p' <<< "$s"

Output:

user1
user2
陈甜 2025-01-29 12:50:26

1。使用GREP 2。提取用户名值

grep -oP '(?<=username = ")[^"]*' a.txt

2。将用户名值分配到数组arr1

readarray -t arr1 <<< $(grep -oP '(?<=username = ")[^"]*' a.txt)

3。打印所有数组arr1 elements

printf "%s\n" ${arr1[@]}

4。在数组中打印第一个和最后一个元素arr1具有3个元素

echo "${arr1[0]}"
echo "${arr[2]}"

1. Extract username values using grep

grep -oP '(?<=username = ")[^"]*' a.txt

2. Assign username values into array arr1.

readarray -t arr1 <<< $(grep -oP '(?<=username = ")[^"]*' a.txt)

3. Print all array arr1 elements

printf "%s\n" ${arr1[@]}

4. Print first and last elements in array arr1 having 3 elements

echo "${arr1[0]}"
echo "${arr[2]}"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文