Cat

如何將內容回顯到cat生成的一系列新文件中

  • December 4, 2018

我想編寫一個循環來生成 22 個 R 腳本,其中包含在 echo 中生成的內容。這個循環中出了什麼問題,我無法獲得具有相應內容的 22 個文件?

我測試過echo "i want that file" > file.r

它工作正常。然後我進行了測試,它被視為兩個單獨的過程。首先它會回顯文本,然後生成 22 個空文件。

for i in `seq 1 22`; do
   echo "a <- read.delim('file${i}.txt', header=T, check.names=FALSE);
       library('splitstackshape');
       loc1 <- cSplit(a, 'V1', ':');
       rm(a);
       out <- cbind.data.frame(loc1$V1_1, loc1$V1_2);
       write.table(out, 'out_file${i}.txt', sep='\t', row.names=F, quote=F)"; 
> build_file${i}.r; done

然後我嘗試了這個..仍然沒有工作..

   for i in `seq 1 22`; do
   echo "a <- read.delim("file${i}.txt", header=T, check.names=FALSE);
   library("splitstackshape");
   loc1 <- cSplit(a, "V1", ":");
   rm(a);
   out <- cbind.data.frame(loc1$V1_1, loc1$V1_2);
   write.table(out, "out_file${i}.txt", sep="\t", row.names=F, quote=F)";
   cat > loc_chr${i}.r; done

不確定我是否完全遵循腳本中的引用以及您希望cat命令執行的操作,因為它從非重定向的標準輸入(即可能是您的鍵盤)讀取。像這樣的東西怎麼樣

for i in `seq 1 22`
 do cat <<- EOF > loc_chr${i}.r
"a <- read.delim("file${i}.txt", header=T, check.names=FALSE);
   library("splitstackshape");
   loc1 <- cSplit(a, "V1", ":");
   rm(a);
   out <- cbind.data.frame(loc1$V1_1, loc1$V1_2);
   write.table(out, "out_file${i}.txt", sep="\t", row.names=F, quote=F)"
EOF
  done

引用自:https://unix.stackexchange.com/questions/485923