如何在字符串中找到模式的最后一次出现,并在unix shell脚本中获取它之前的所有内容?
请帮我在最后一次出现“_”之前获取所有信息。我的绳子看起来像如何在字符串中找到模式的最后一次出现,并在unix shell脚本中获取它之前的所有内容?,shell,unix,substring,Shell,Unix,Substring,请帮我在最后一次出现“_”之前获取所有信息。我的绳子看起来像 abc_defg_hijkl_20160101.txt 我只需要最后一个“u2;”之前的部分 我正在尝试使用剪切,但再次无法使用它,因为下划线(“u”)的数量不固定。使用BASH的字符串操作,您可以从输入中修剪最后一个之后的部分: s='abc_defg_hijkl_20160101.txt' echo "${s%_*}" abc_defg_hijkl echo "$s" | sed 's/_[^_]*$//' 如果您没有使用
abc_defg_hijkl_20160101.txt
我只需要最后一个“u2;”之前的部分
我正在尝试使用剪切,但再次无法使用它,因为下划线(“u”)的数量不固定。使用BASH的字符串操作,您可以从输入中修剪最后一个
之后的部分:
s='abc_defg_hijkl_20160101.txt'
echo "${s%_*}"
abc_defg_hijkl
echo "$s" | sed 's/_[^_]*$//'
如果您没有使用BASH,则可以使用此sed
命令从输入中删除最后一个之后的零件:
s='abc_defg_hijkl_20160101.txt'
echo "${s%_*}"
abc_defg_hijkl
echo "$s" | sed 's/_[^_]*$//'
使用BASH的字符串操作,您可以从输入中修剪最后一个\uuuu
之后的部分:
s='abc_defg_hijkl_20160101.txt'
echo "${s%_*}"
abc_defg_hijkl
echo "$s" | sed 's/_[^_]*$//'
如果您没有使用BASH,则可以使用此sed
命令从输入中删除最后一个之后的零件:
s='abc_defg_hijkl_20160101.txt'
echo "${s%_*}"
abc_defg_hijkl
echo "$s" | sed 's/_[^_]*$//'
是的,这很有效。谢谢你的迅速回复。抱歉,如果这个问题太幼稚了,因为我还不熟悉shell脚本。是的,这非常有效。谢谢你的迅速回复。抱歉,如果这个问题太幼稚了,因为我对shell脚本还不熟悉。