正则表达式 – 如何将正则表达式的匹配指定给变量?
发布时间:2020-12-14 06:29:03 所属栏目:百科 来源:网络整理
导读:我有一个包含各种条目的文本文件.每个条目以包含所有星号的行结束. 我想使用shell命令来解析这个文件,并将每个条目分配给一个变量.我该怎么做? 以下是输入文件的示例: ***********Field1***********Lorem ipsumData to match***********More dataStill mor
我有一个包含各种条目的文本文件.每个条目以包含所有星号的行结束.
我想使用shell命令来解析这个文件,并将每个条目分配给一个变量.我该怎么做? 以下是输入文件的示例: *********** Field1 *********** Lorem ipsum Data to match *********** More data Still more data *********** 这是我的解决方案到目前为止 #!/bin/bash for error in `python example.py | sed -n '/.*/,/^**$/p'` do echo -e $error echo -e "n" done 然而,这只是将匹配文本中的每个单词分配给$error,而不是整个块.
我很惊讶,没有看到一个本机的bash解决方案.是的,bash有正则表达式.您可以在线查找大量的随机文档,特别是如果在查询中包含“bash_rematch”,或者仅查看手册页.这是一个愚蠢的例子,从
here开始,稍作修改,打印整个匹配以及每个捕获的匹配,用于正则表达式.
if [[ $str =~ $regex ]]; then echo "$str matches" echo "matching substring: ${BASH_REMATCH[0]}" i=1 n=${#BASH_REMATCH[*]} while [[ $i -lt $n ]] do echo " capture[$i]: ${BASH_REMATCH[$i]}" let i++ done else echo "$str does not match" fi 重要的一点是扩展测试[[…]]使用其正则表达式比较=?将整个匹配存储在${BASH_REMATCH [0]}中,捕获的匹配在${BASH_REMATCH [i]}中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |