加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何将BASH变量插入到PERL正则表达式替换中?

发布时间:2020-12-15 22:10:28 所属栏目:安全 来源:网络整理
导读:我想用数组中的字符串替换某些文本的中间部分. #!/bin/basharray=(1 2 3 4 5 6)for i in "${array[@]}"; do # doesn't work echo "some text" | perl -pe 's|(some).*(text)|1$i2|'done 我使用perl正则表达式而不是sed因为它更容易非贪婪的匹配支持.获取$i
我想用数组中的字符串替换某些文本的中间部分.

#!/bin/bash

array=(1 2 3 4 5 6)

for i in "${array[@]}"; do
    # doesn't work
    echo "some text" | perl -pe 's|(some).*(text)|1$i2|'
done

我使用perl正则表达式而不是sed因为它更容易非贪婪的匹配支持.获取$i值的正确语法是什么?

解决方法

只需用单引号替换正则表达式周围的双引号即可.

#!/bin/bash

array=(1 2 3 4 5 6)

for i in "${array[@]}"; do
    echo "some text" | perl -pe "s|(some).*(text)|1$i2|"
done

单引号不会扩展变量.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读