我的文件 1 包含:
"text1"
"text2"
"text3"
"text4"
等等,通过“text2000”。注意 - 包括引号。
我有另一个包含代码脚本的文件。
我想浏览文件 1 并将“textx”与代码脚本一起放入文件中,每次创建一个新文件。所以我应该创建 2000 个文件。我还想将每个文件命名为 1.js-2000.js。
例如,生成的文件将具有:
"Text1"
base code
我怎么能这样做呢?作为参考,我目前正在尝试使用 bash,但对其他选项持开放态度。
答案1
在 shell 中很容易做到:
c=0
while IFS= read -r text; do
{
printf '%s\n' "$text"
cat file2
} > "newFile$((c += 1))"
done < file1
这里file1
有您要添加的文本字符串,也是file2
您的代码。我在一个file2
有 96 行 shell 代码和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 机器上的任何 shell 中使用任何 awk:
awk '
NR==FNR {
code = code ORS $0
next
}
{
print $0 ORS code > (FNR ".js")
close(FNR ".js")
}
' codefile file1