【问题标题】:Substitute string when one input string is substring of other input string当一个输入字符串是另一个输入字符串的子字符串时替换字符串
【发布时间】:2021-01-25 00:38:10
【问题描述】:

如何使用sedperl对多个输入字符串进行替换,其中一个字符串是另一个字符串的子字符串。

例子:

输入:a[b][c]

预期输出:a.*b.*c.*

我尝试关注,但 b 和 c 之间的 ][ 搞砸了结果。

echo "a[b][c]" |sed -r 's/[\[\]]{1}|\[|\]/.*/g'
a.*b.*.*c.*
echo "a[b][c]" |sed -r 's/[\[\]]|\[|\]/.*/g'
a.*b.*.*c.*

我希望有人可以提供帮助,谢谢。更喜欢 perl 解决方案,因为我必须将其放入其余的非共享代码中。

【问题讨论】:

  • echo a[b][c] | perl -pe "s/([\[\]]+)/.*/g" 产生a.*b.*c.*
  • 这也是可能的:echo 'a[b][c]' | perl -pe 's/[][]+/.*/g'

标签: perl sed


【解决方案1】:

这可能对你有用(GNU sed):

sed -E 's/\[|\]\[?/.*/g' file

[] 后跟零或一[ 替换为.*

【讨论】:

    【解决方案2】:
    echo "a[b][c]" | sed 's/]/.*/g; s/\[/.*/; s/\[//g'
    

    输出:

    a.*b.*c.*

    或将sed 替换为perl -pe

    【讨论】:

      猜你喜欢
      • 2011-04-06
      • 2013-12-03
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 2014-12-23
      • 2021-06-15
      相关资源
      最近更新 更多