Мне нужно обрезать следующий путь в сценарии оболочки Unix, пожалуйста, любезно предложитьобрезать исходный путь к файлу
- input-
/vobs/java/server/forms/data/Branch/semanticexplorer.pls
- output-
server/forms/data/Branch/semanticexplorer.pls
Мне нужно обрезать следующий путь в сценарии оболочки Unix, пожалуйста, любезно предложитьобрезать исходный путь к файлу
/vobs/java/server/forms/data/Branch/semanticexplorer.pls
server/forms/data/Branch/semanticexplorer.pls
You» мы не дали нам никаких более общих критериев, чтобы обрезать - так что я измельчу фиксированные первые два компонента.
Механизм, как это позволяет избежать выполнения процесса:
input=/vobs/java/server/forms/data/Branch/semanticexplorer.pls
output=${input#/vobs/java/}
Bash имеет некоторые расширения, которые были бы полезны для более общего пути обрезки. Оболочка Korn поддерживает нотацию ${var#prefix}
.
Вы также можете использовать:
prefix=/vobs/java/
input=/vobs/java/server/forms/data/Branch/semanticexplorer.pls
output=${input#$prefix}
Это позволяет изменять префикс и до сих пор удалить его.
В большинстве оболочек грубая сила подход:
input=/vobs/java/server/forms/data/Branch/semanticexplorer.pls
output=$(echo $input | sed "s%/vobs/java/%%")
В Bash:
input=/vobs/java/server/forms/data/Branch/semanticexplorer.pls
output=$(sed "s%/vobs/java/%%" <<< $input)
echo $pathname | sed -E 's/\/([^/]*\/){2}//'
иерархия каталогов/ВОБ/Java всегда одинаково или он отличается? – roundrobin