파일 이름을 끝에 유지하면서 파일 경로의 중간을 바꾸시겠습니까?

파일 이름을 끝에 유지하면서 파일 경로의 중간을 바꾸시겠습니까?

bash를 사용하여 파일 경로를 조작하려고 합니다. 목표의 첫 번째 부분이 완료되었습니다. 파일 경로의 전반부를 로컬 컴퓨터의 경로로 바꿨습니다.

$> 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

다음 부분에서 문제가 발생했습니다. 구문 분석을 포함하여 /analysis/와 filename 사이의 모든 내용을 바꾸고 싶습니다 /doc/figures/FILENAME. Rscript를 사용하여 이 함수를 만들 수 있었지만 파이프 문에서 파일 이름을 유지하는 방법을 알 수 없습니다.

예상 입력:

/Users/djm/Documents/projects/bison/assessment/LWR/validation/HBEP/analysis/BK363/HBEP_BK363_out.csv

예상 출력:

/Users/djm/Documents/projects/bison/assessment/LWR/validation/HBEP/doc/figures/HBEP_BK363_out.csv

다음은 필요한 정규 표현식과 함께 현재 Rscript입니다.

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"

작성자: 2019-04-09 작성일:대표패키지(v0.2.1)

답변1

sed를 다시 사용해 보세요

 sed 's#/analysis/.\+/#/doc/figures/#'

귀하의 의견:

$ echo /Users/djm/Documents/projects/bison/assessment/LWR/validation/HBEP/analysis/BK363/HBEP_BK363_out.csv | \
sed 's#/analysis/.\+/#/doc/figures/#'

/Users/djm/Documents/projects/bison/assessment/LWR/validation/HBEP/doc/figures/HBEP_BK363_out.csv

관련 정보