各ファイルにいくつかの変更を加えて複数回コピーする必要がある入力ファイルがあります。つまり、各ファイルの30行ごとに変更されます。
例えば
私のデフォルトのテキストファイル名はD0.txtで、複数の番号をコピーする必要があります。 30行目は「変数D1が0.0に等しい」です。
このファイルを初めてコピーするとき
その文字列を「変数D1が1に等しい」に変更したいと思います。
次に、ファイルをD1.txtとして保存します。
同様に、5つのファイルを作成して100回繰り返したいと思います。
だからファイルはフォルダに保存されます
D0.txt
D1.txt
D2.txtなどでは、各行の30行目は「Diameter = $ n」であり、以下にサンプルテキストファイル形式を添付します。フォルダ内のファイルの目的の形式。
答え1
Bashではできます
for i in {1..5}; do
cp D0.txt D$i.txt;
sed -i "30s/.*/variable D1 equal $i/" D$i.txt;
done
これは{1..5}
ループの範囲を指定し、各反復中
ファイルを新しい名前にコピーします。 sedコマンドを使用して30行のテキストを置き換えます。-i
内部を指定し、行30
番号を指定し、指定されたs
テキストの検索を指定します。私たちの場合、これは30行のすべてのテキストを意味するので、そのテキストをファイル.*
に置き換えようとしています。variable D1 equal $i
D$i.txt