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