【问题标题】:How to extract a substring from a string using a string match condition in SHELL [duplicate]如何使用SHELL中的字符串匹配条件从字符串中提取子字符串[重复]
【发布时间】:2020-08-24 08:35:42
【问题描述】:

我必须从中提取一个子字符串。

- Session establishment complete on server localhost/127.0.0.1:2183, sessionid = 
   0x1000c22ff510020, negotiated timeout = 120000 WATCHER:: WatchedEvent state:SyncConnected 
   type:None path:null [zk: localhost:2183(CONNECTED) 0] addauth digest super:testing [zk: 
   localhost:2183(CONNECTED) 1] ls /live_nodes [rn3-gcs02.rno.foo.com:8985_solr, rn3- 
   gcsb.rno.foo.com:8985_solr] [zk: localhost:2183(CONNECTED) 2]

要提取的子串是

[rn3-gcs02.rno.foo.com:8985_solr, rn3- gcsb.rno.foo.com:8985_solr]

它是一个动态子字符串,可以有 2 个或更多元素

【问题讨论】:

  • 如何确定?总是在ls /live-nodes 之后发生什么?
  • 另外,换行符是真实的/重要的,还是可以在进行任何匹配之前将整个内容合并为一行?
  • 顺便说一句,请注意,一般情况下,您应该在尝试提问时展示您尝试过的内容以及遇到的具体问题。
  • 总是在 ls /live-nodes 之后。换行符不是真实的。它的单串线

标签: bash shell


【解决方案1】:
re='ls /live_nodes (\[[^]]+\])'
[[ $s =~ $re ]] && echo "${BASH_REMATCH[1]}"

...发射,您在$s 中输入:

[rn3-gcs02.rno.foo.com:8985_solr, rn3-
   gcsb.rno.foo.com:8985_solr]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 2017-09-24
    • 2020-05-16
    • 2017-12-30
    • 1970-01-01
    • 2021-02-12
    • 2011-11-17
    • 1970-01-01
    相关资源
    最近更新 更多