私のファイル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