cat에 의해 생성된 새로운 일련의 파일에 콘텐츠를 에코하는 방법

cat에 의해 생성된 새로운 일련의 파일에 콘텐츠를 에코하는 방법

echo에서 생성된 콘텐츠로 22개의 R 스크립트를 생성하는 루프를 작성하고 싶습니다. 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

답변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

답변2

> build_file${i}.r첫 번째 코드 예제 에는 20개 파일로 아무것도 리디렉션하지 않는 자체 줄이 있기 때문에 작동하지 않습니다 . > build_file${i}.r끝에 추가하세요 echo.

cat두 번째 코드 예제는 바닥 때문에 작동하지 않습니다. cat연결하려는 대상을 제공하지 않았 으므로 입력을 기다리고 있습니다.

해당 cat줄을 삭제하고 > loc_chr${i}.r에 추가해야 합니다 echo.

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)" > loc_chr${i}.r
done

관련 정보