首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有/字符的BASH_REMATCH

带有/字符的BASH_REMATCH
EN

Stack Overflow用户
提问于 2021-11-15 10:22:26
回答 1查看 50关注 0票数 0

嗨,我有这样一个文本文件:

代码语言:javascript
复制
# mysite.online (host ok)
192.168.0.10,0
192.168.1.3,0
# mysite.ch (host ok)
192.168.0.11
192.168.1.4
# mysite2.online (host ok)
192.168.0.12
192.168.1.9
# mysite2.ch (host ok)
192.168.0.13
192.168.1.11
# mysite.ch/home.html (url ok)
192.168.0.15
192.168.1.169

我需要读取单行并捕获主机名和IP:我正在使用以下代码:

代码语言:javascript
复制
while read -r line
  do
    if [[ $line =~ ([a-zA-Z0-9.-]+)\ \((host|url)\ ok\) ||
      $line =~ ([0-9]+(\.[0-9]+){3})\ \(IP\ ok\) ]]; then
      host="${BASH_REMATCH[1]}"
    elif [[ $host != "" ]]; then
      if [[ $line =~ ^([0-9]+(\.[0-9]+){3}) ]]; then
        ip="${BASH_REMATCH[1]}"
        check_site $host $ip
      fi
    fi
  done < <(echo -e "$chunk") &

但是当存在/字符时,我有一个问题要捕获主机,例如主机

# mysite.ch/home.html (url ok)只返回home.html,而不返回mysite.ch/home.html

怎么才能修好呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-15 11:50:53

更改这一行:

代码语言:javascript
复制
 if [[ $line =~ ([a-zA-Z0-9.-]+)\ \((host|url)\ ok\) ||
          $line =~ ([0-9]+(\.[0-9]+){3})\ \(IP\ ok\) ]]; then

对此:

代码语言:javascript
复制
 if [[ $line =~ ([a-zA-Z0-9./-]+)\ \((host|url)\ ok\) ||
          $line =~ ([0-9]+(\.[0-9]+){3})\ \(IP\ ok\) ]]; then
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69972818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档