如何从此字符串中删除前导文本

如何从此字符串中删除前导文本

如何删除这一行中直到数字 41 的所有字符,一直到数字 41

##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin

答案1

我不清楚您是否希望将其41包含在输出中。因此这里有两组选项

1. 删除文本直至并包含41

如果您正在运行,bash则可以使用内置变量处理

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "${line#*41}"

如果你能保证没有其他的41就行了你可以用sed

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | sed 's/^.*41//'

如果你有 GNU,grep你可以选择下面的所有内容41

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | grep -Po '(?<=41).*'

2. 删除 直到但不包括 的文本41,使用##作为标记

如果您正在运行,bash则可以使用内置变量处理

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "${line#*?##}"

如果你能保证没有其他的##就行了你可以用sed

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | sed 's/^..*##//'

如果你有 GNU,grep你可以选择下面的所有内容##

line='##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin'
printf "%s\n" "$line" | grep -Po '(?<=.##).*'

答案2

您可以使用 sed 删除所有内容,直到第一个数字

echo '##SHUTDOWN_MAINT##41 * * * * /vend/oracle/util/bin' | sed 's/[^0-9]*//'

如果你想在文件中更改它,请使用

sed -i 's/[^0-9]*//' filename

希望有帮助

干杯

相关内容