catによって生成された新しい一連のファイルにコンテンツをエコーする方法

catによって生成された新しい一連のファイルにコンテンツをエコーする方法

echoで生成されたコンテンツで22個のRスクリプトを生成するループを作成したいと思います。 22ファイルのコンテンツをインポートできないようにするこのループにはどのような問題がありますか?

私はテストしましたecho "i want that file" > file.r

良い結果。その後、テストし、2つの別々のプロセスとして処理しました。まず、テキストをエコーし​​てから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

ベストアンサー1

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

おすすめ記事