【问题标题】:How to modify this sed regular expression to replace extension of only a "."如何修改这个 sed 正则表达式来替换扩展名只有一个“。”
【发布时间】:2012-04-19 01:42:05
【问题描述】:

我想得到:

echo "penguin." | sed 's/\.[A-Za-z0-9][A-Za-z0-9]*$/'".pippa"'/g'

输出:

penguin.pippa

如何修改代码以便它可以解释“。”正常吗?

谢谢

【问题讨论】:

    标签: regex unix replace sed


    【解决方案1】:

    sed 's/\.[A-Za-z0-9]*$/'".pippa"'/g'

    【讨论】:

      【解决方案2】:
      echo "penguin."| sed 's/\.$/.pippa/g'
      

      【讨论】:

        【解决方案3】:

        你的表情:

        sed 's/\.[A-Za-z0-9][A-Za-z0-9]*$/'".pippa"'/g'
        

        您是说在点之后必须有一个字母数字字符。 [A-Za-z0-9][A-Za-z0-9]* 这表示[A-Za-z0-9] 中的“一个或多个”。点后没有字母数字,字符串结束。所以 sed 永远不会应用更改。删除它,你就准备好了:

        echo "penguin." | sed 's/.[A-Za-z0-9]*$/.pippa/g'
        

        此外,sed 表达式第二部分中的引号在这里没有任何作用。

        【讨论】:

        • 这实际上是我正在编写的脚本的一部分,需要将这种特定情况与其他输入一起考虑,例如:'a b' 和 'penguin.dat' 制作 'penguin.a b ' 所以它需要用“更大的图景”来写,但你的建议很有效。谢谢!
        【解决方案4】:
        echo "penguin." | sed 's/\./'".pippa"'/g'
        

        echo "penguin." | sed 's/\.[A-Za-z0-9]*$/'".pippa"'/g'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-21
          • 1970-01-01
          • 2018-08-22
          • 2011-09-01
          • 2012-03-06
          • 1970-01-01
          • 2011-02-12
          相关资源
          最近更新 更多