我正在运行linux bash脚本。从像/gpx/trk/name=MyTrack1这样的粗壮行中,我只想在=之后保留行尾。

我正在努力了解为什么以下 sed 命令无法按预期工作:

echo "/gpx/trk/name=MyTrack1" | sed -e "s/^*=//"

(我也尝试过)
echo "/gpx/trk/name=MyTrack1" | sed -e "s/^*\=//"

返回值始终是/gpx/trk/name=MyTrack1,而不是MyTrack1

最佳答案

$ echo "/gpx/trk/name=MyTrack1" | sed -e "s/^.*=//"
MyTrack1

正则表达式^.*=匹配字符串中直到最后一个=的所有内容。

您的正则表达式^*=将与字符串开头的文字字符串*=相匹配,例如
$ echo "*=/gpx/trk/name=MyTrack1" | sed -e "s/^*=//"
/gpx/trk/name=MyTrack1

正则表达式中的*字符通常会修改紧接的前一个表达式,以便可以将零个或多个匹配。另一方面,当*出现在表达式的开头时,它与字符*相匹配。

09-12 15:38