내 파일 1에는 다음이 포함되어 있습니다.
"text1"
"text2"
"text3"
"text4"
잠깐, "text2000"을 전달하세요. 참고 - 따옴표를 포함하세요.
코드 스크립트가 포함된 다른 파일이 있습니다.
파일 1을 살펴보고 코드 스크립트와 함께 "textx"를 파일에 넣고 매번 새 파일을 만들고 싶습니다. 그래서 2000개의 파일을 생성해야 합니다. 또한 각 파일의 이름을 1.js-2000.js로 지정하고 싶습니다.
예를 들어 생성된 파일에는 다음이 포함됩니다.
"Text1"
base code
어떻게 해야 하나요? 참고로 저는 현재 bash를 사용하려고 하는데 다른 옵션도 열려 있습니다.
답변1
셸에서는 쉽게 수행할 수 있습니다.
c=0
while IFS= read -r text; do
{
printf '%s\n' "$text"
cat file2
} > "newFile$((c += 1))"
done < file1
여기에 file1
추가하려는 텍스트 문자열이 있으며 이는 file2
코드이기도 합니다. 나는 이것을 file2
96줄 file1
의 쉘 코드와 2000개의 문자열을 가진 작은 컴퓨터에서 테스트했는데, 내 컴퓨터에서는 약 4초가 걸렸습니다. 그러나 file2
규모가 크다면 다른 언어 및/또는 접근 방식을 사용하는 것을 고려해야 합니다.
답변2
@terdon의 답변을 약간 조정하려면 다음을 사용하십시오 bash
.
- 실제로 첫 글자를 대문자로 쓰고 싶다고 가정합니다.
- 루프에서 외부 명령을 호출하지 않으면 성능이 향상됩니다.
# read the code file just once
code=$(< scriptFile)
c=1
while IFS= read -r line; do
prefix=${line%%[[:alpha:]]*} # the leading non-alpha chars of $line
text=${line#"$prefix"} # the rest of the line
printf '%s%s\n\n%s\n' "$prefix" "${text^}" "$code" > "newFile${c}"
((++c))
done < file1
답변3
모든 Unix 시스템의 모든 쉘에서 awk를 사용하십시오.
awk '
NR==FNR {
code = code ORS $0
next
}
{
print $0 ORS code > (FNR ".js")
close(FNR ".js")
}
' codefile file1