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