Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 检查字符串中的子字符串并移动其在主字符串中的顺序_Bash_Shell - Fatal编程技术网

Bash 检查字符串中的子字符串并移动其在主字符串中的顺序

Bash 检查字符串中的子字符串并移动其在主字符串中的顺序,bash,shell,Bash,Shell,现在我进行比较,看看主字符串中是否存在子字符串,如下所示: main_string='{\"create\":false,\"name\":\"specified\",\"queue\":null,\"rules\":null},{\"create\":false,\"name\":\"primaryGroup\",\"queue\":null,\"rules\":null}, {\"create\":null,\"name\":\"secondaryGroupExistingQueue\",\

现在我进行比较,看看主字符串中是否存在子字符串,如下所示:

main_string='{\"create\":false,\"name\":\"specified\",\"queue\":null,\"rules\":null},{\"create\":false,\"name\":\"primaryGroup\",\"queue\":null,\"rules\":null}, {\"create\":null,\"name\":\"secondaryGroupExistingQueue\",\"queue\":null,\"rules\":null},{\"create\":null,\"name\":\"default\",\"queue\":null,\"rules\":null}'
substring='\"create\":false,\"name\":\"specified\",\"queue\":null,\"rules\":null'
但我不知道如何移动它的顺序。我试过了,但我不知道在bash中移动时如何实现移动或维持秩序。 (您可以注意到子字符串I selected,是main_字符串中的第一个字符串,由“,”和其他字符串分隔)


欢迎提出任何建议,谢谢你能去掉反斜杠吗?没有必要在单引号内转义双引号;反斜杠变为文字反斜杠。如果没有它们,这看起来像JSON数据,那么最好使用而不是原始字符串操作

if [[ $main_string=~ "$substring" ]]; then
jq是为处理JSON数据而定制的。它可以查询、过滤、操作、生成新的JSON数据,无论您喜欢什么。下面是最基本的查询,
,它只是简单地将输入数据原封不动地吐出。请注意jq是如何解析它并将其打印出来的。我所要做的就是传入用方括号括起来的
$main_string

main_string='{"create":false,"name":"specified","queue":null,"rules":null},{"create":false,"name":"primaryGroup","queue":null,"rules":null},{"create":null,"name":"secondaryGroupExistingQueue","queue":null,"rules":null},{"create":null,"name":"default","queue":null,"rules":null}'

$jq-r'.'谢谢您的解释,但不幸的是我无法安装jq。需要使用bash来实现这一点。如果您想将其移动到任何其他位置,而不是始终在末尾,该怎么办?请阅读jq手册。你得摆弄它。这是一种相当成熟的语言。
$ jq -r '.' <<< "[$main_string]"
[
  {
    "create": false,
    "name": "specified",
    "queue": null,
    "rules": null
  },
  {
    "create": false,
    "name": "primaryGroup",
    "queue": null,
    "rules": null
  },
  {
    "create": null,
    "name": "secondaryGroupExistingQueue",
    "queue": null,
    "rules": null
  },
  {
    "create": null,
    "name": "default",
    "queue": null,
    "rules": null
  }
]
$ jq '(.[] | select(.name=="specified")) as $elem | . - [$elem] + [$elem]' <<< "[$main_string]"
[
  {
    "create": false,
    "name": "primaryGroup",
    "queue": null,
    "rules": null
  },
  {
    "create": null,
    "name": "secondaryGroupExistingQueue",
    "queue": null,
    "rules": null
  },
  {
    "create": null,
    "name": "default",
    "queue": null,
    "rules": null
  },
  {
    "create": false,
    "name": "specified",
    "queue": null,
    "rules": null
  }
]