Estou tentando manipular um caminho de arquivo usando o bash. A primeira parte do meu objetivo foi concluída, onde substituo a primeira metade do caminho do arquivo pelo caminho no meu computador local.
$> fp=$"/projects/bison/git/bison_20190405/assessment/LWR/validation/HBEP/analysis/BK363/HBEP_BK363_out.csv"
$> echo $fp |
sed -E "s#/projects/bison/git/bison_[0-9]{8}#/Users/djm/Documents/projects/bison#"
$> /Users/djm/Documents/projects/bison/assessment/LWR/validation/HBEP/analysis/BK363/HBEP_BK363_out.csv
A próxima parte eu estou tendo problemas com. Gostaria de substituir tudo entre /analysis/
e o nome do arquivo por /doc/figures/FILENAME
, incluindo análise. Consegui criar essa funcionalidade usando um Rscript, mas não consigo descobrir como manter o nome do arquivo na instrução pipe.
Entrada esperada:
/Users/djm/Documents/projects/bison/assessment/LWR/validation/HBEP/analysis/BK363/HBEP_BK363_out.csv
Saída esperada:
/Users/djm/Documents/projects/bison/assessment/LWR/validation/HBEP/doc/figures/HBEP_BK363_out.csv
Aqui está meu Rscript atual com o regexp necessário:
library(dplyr)
library(stringr)
test <- "/projects/bison/git/bison_20190405/assessment/LWR/validation/HBEP/analysis/BK363/HBEP_BK363_out.csv"
str_replace_all(test, "/projects/bison/git/bison_[0-9]{8}",
"Users/djm/Documents/projects/bison") %>%
str_replace_all("(?:analysis).*$",
paste0("doc/figures/", basename(.)))
#> [1] "Users/djm/Documents/projects/bison/assessment/LWR/validation/HBEP/doc/figures/HBEP_BK363_out.csv"
Criado em 2019-04-09 pelo pacote reprex (v0.2.1)
Basta usar sed novamente
Para sua entrada: