首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确保开始和结束部分

确保开始和结束部分
EN

Unix & Linux用户
提问于 2023-02-02 08:40:27
回答 1查看 78关注 0票数 0

我有由起始部分定义的文件,这些部分由oy TITLESUBTITLE组成,后面是逗号分隔的KEYWORD

代码语言:javascript
复制
## TITLE [SUBTITLE] KEYWORD,KEYWORD  

结束使用

代码语言:javascript
复制
## END OF TITLE [SUBTITLE]

我希望确保文件包含定义的相应结束部分。

我如何做一个测试,以检查文件的事情,应该是什么。我需要在巴什考试。

代码语言:javascript
复制
## FAML [ASMB] keyword,keyword  

## Some text
## Description
## END OF FAML [ASMB]

Some Code

## More text

## FALUN [GONG] keyword,keyword  

## Some text
## Description
## END OF FALUN [GONG]

More Text

从下面开始,以捕获相应部分的实际字符串。

代码语言:javascript
复制
while read line; do
  if [[ $line =~ ^##\ ([A-Z]+)\ \[([A-Z]+)\]\ (.*),(.*)$ ]]; then
    title=${BASH_REMATCH[1]}
    subtitle=${BASH_REMATCH[2]}
    keywords=${BASH_REMATCH[3]}
    keywords2=${BASH_REMATCH[4]}
    echo "Title: $title"
    echo "Subtitle: $subtitle"
    echo "Keywords: $keywords, $keywords2"
  fi
done < input.txt

尝试在以下情况下运行代码,但没有发生打印不是关键字的数组打印。

代码语言:javascript
复制
  ## DN [AMBIT] bash,resource
  ##   hodeuiihoedu
  ##   AVAL:
  ##   + ooeueocu
  ## END OF DN [AMBIT]
EN

回答 1

Unix & Linux用户

发布于 2023-02-08 03:15:02

关键字的完整列表将被捕获到一个变量中。然后将逗号分隔的列表读入数组中。

代码语言:javascript
复制
while read -r line; do
    if [[ $line =~ ^##\ ([A-Z]+)\ \[([A-Z]+)\]\ (.*[,]?)$ ]]; then
        title="${BASH_REMATCH[1]}"
        subtitle="${BASH_REMATCH[2]}"
        echo "Title: $title"
        echo "Subtitle: $subtitle"

        # read keyword list into array
        IFS=',' read -ra keywords <<< "${BASH_REMATCH[3]}"
        i=0
        for kw in "${keywords[@]}"; do
            echo "Keyword$((i+=1)): $kw"
        done
        echo
    fi
done << EOF

## FAML [ASMB] keyword1,keyword2  

## Some text
## Description
## END OF FAML [ASMB]

Some Code

## More text

## FALUN [GONG] keyword1,keyword2,keyword3,keyword4

## Some text
## Description
## END OF FALUN [GONG]
EOF

输出:

代码语言:javascript
复制
Title: FAML
Subtitle: ASMB
Keyword1: keyword1
Keyword2: keyword2

Title: FALUN
Subtitle: GONG
Keyword1: keyword1
Keyword2: keyword2
Keyword3: keyword3
Keyword4: keyword4
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/734050

复制
相关文章

相似问题

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