2011-01-05 3 views
0

Мне нужно обрезать следующий путь в сценарии оболочки Unix, пожалуйста, любезно предложитьобрезать исходный путь к файлу

  • input- /vobs/java/server/forms/data/Branch/semanticexplorer.pls
  • output- server/forms/data/Branch/semanticexplorer.pls
+0

иерархия каталогов/ВОБ/Java всегда одинаково или он отличается? – roundrobin

ответ

3

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) 
0
echo $pathname | sed -E 's/\/([^/]*\/){2}//' 
Смежные вопросы