Ответ 1
Это должно работать:
echo "DAAAAABCBBBCCABCABC" | sed -e 's/\(ABC\)*$//g'
Результат:
DAAAAABCBBBCC
Строка окружения между круглыми скобками и *
применяется ко всем буквам внутри них в этом точном порядке.
Я хотел бы удалить любую ABC в конце строки.
Лучшее, что я придумал, это
echo ${String}| sed -e 's/["ABC"]*$//g'
Однако он удалит все A, или B или C в конце строки.
Если String - DAAAAABCBBBCCABCABC, если я использую указанное выше выражение, оно вернет "D" вместо "DAAAAABCBBBCC",
Есть ли лучший способ сделать это? Благодарю.
Это должно работать:
echo "DAAAAABCBBBCCABCABC" | sed -e 's/\(ABC\)*$//g'
Результат:
DAAAAABCBBBCC
Строка окружения между круглыми скобками и *
применяется ко всем буквам внутри них в этом точном порядке.
bash может сделать это внутренне. Следующее удаляет строку "ABC" в конце, и ее результат может использоваться при назначении переменной, команде или что-то еще:
${String%ABC}
Вы должны использовать:
sed -E 's/(ABC)+$//'
ИЛИ:
sed -r 's/(ABC)+$//'
Оба будут выдавать результат:
DAAAAABCBBBCC