Как исправить ошибку монтирования с параметрами -o?

Чтобы заменить только последнее совпадение, замените

result="$(printf "%s" "$target" | sed "s/${search}$/${replace}/g")

с

result="$(printf "%s" "$target" | sed "s/\(.*\)${search}/\1${replace}/")"

$соответствует концу строки, а не последнему шаблону поиска, и вам не нужен модификатор g, так как существует (не более )одной замены.

\(.*\)является жадным и sedсопоставляет все до того, как найдет последний шаблон $search. И поскольку мы не хотим удалять эту часть, мы должны включить ее как \1в замену.

Примечания:

  • В сценарии отсутствует шебанг #!/bin/bashв первой строке.
  • -eеще не ()реализовано.
  • Существует множество переменных, которые используются только один раз. Их удаление сделает ваш код намного чище, например. функция searchReplaceLastMatchOnly()может быть сведена к

    function searchReplaceLastMatchOnly() {
      printf "%s" "${1:- }" | sed "s/\(.*\)${2:- }/\1${3:- }/"
    }
    
1
09.11.2020, 00:40
1 ответ

Эти параметры недоступны для файловых систем ext *. Проверьте справочную страницу для mount (8). эти параметры действительны только для файловых систем, таких как tmpfs, fat, adfs...

2
18.03.2021, 22:51

Теги

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