Как удалить начальный текст из этой строки

Хорошо.Так что я не совсем уверен, почему, но удаляю все в:

/etc/apt/sources.list.d

Исправлено. Хотя единственными вещами там были дополнения к исходному списку для менделей и возвышенного -текста.

Вздох.

0
07.12.2019, 23:19
2 ответа

Мне непонятно, хотите ли вы, чтобы 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 '(?<=.##).*'
1
28.01.2020, 02:38

Вы можете использовать sed для удаления всего до первой цифры

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

Если вы хотите изменить его в файле, используйте

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

Надеюсь, это поможет

Ура

0
28.01.2020, 02:38

Теги

Похожие вопросы