Добавить дефис после первых N символов в строке, а также удалить часть строки, которая начинается с#

Глобальные настройки оболочки находятся в /etc/profile.d, но я бы не советовал изменять среду каждого пользователя, отличную от стандартной.

Было бы лучше вместо этого добавить необходимые пакеты Python в среду по умолчанию или вызывать специальную среду только при необходимости.

-1
23.11.2020, 22:53
2 ответа

Используйте расширения параметров.

#!/bin/bash
expected=391c-294eb646cd0f3068cc7ba945071d04327b0ccb181d901466ee3d79c6fe69
input='391c294eb646cd0f3068cc7ba945071d04327b0ccb181d901466ee3d79c6fe69#3640345'

result=${input%#*}  # Remove everything starting with the last #.
result=${result:0:4}-${result:4}  # Insert the dash.

[[ $result == $expected ]] && echo ok

Если вам нужен первый #, используйте ${input%%#*}.

1
18.03.2021, 22:47

Здесь полезно использовать сопоставление регулярных выражений:

str='391c294eb646cd0f3068cc7ba945071d04327b0ccb181d901466ee3d79c6fe69#3640345'
[[ "$str" =~ (.{4})([^#]+) ]] && new="${BASH_REMATCH[1]}-${BASH_REMATCH[2]}"
echo "$new"
391c-294eb646cd0f3068cc7ba945071d04327b0ccb181d901466ee3d79c6fe69

МассивBASH_REMATCHсодержит захваченные части регулярного выражения, а индекс 0 содержит часть входных данных, которая соответствует всему регулярному выражению.

3
18.03.2021, 22:47

Теги

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