Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在字符串中找到模式的最后一次出现,并在unix shell脚本中获取它之前的所有内容?_Shell_Unix_Substring - Fatal编程技术网

如何在字符串中找到模式的最后一次出现,并在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脚本还不熟悉。