如何修改这个sed正则表达式来替换只有“。”的扩展名。

时间:2012-04-19 01:42:06

标签: regex unix replace sed

我想要:

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

输出:

penguin.pippa

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

谢谢

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

echo "penguin."| sed 's/\.$/.pippa/g'

答案 2 :(得分:2)

你的表达:

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

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

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

此外,sed表达式第二部分中的引号在此处不起作用。

答案 3 :(得分:1)

echo "penguin." | sed 's/\./'".pippa"'/g'

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