次の行を含むファイルがあります。
file1 -int sch1.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR
この変更でこの行を100回(sch2、sch3、sch4など)繰り返したいと思います。
file1 -int sch2.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR
file1 -int sch3.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR
file1 -int sch4.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR
どうすればいいですか?
よろしくお願いします。レハン
ベストアンサー1
printf 'file1 -int sch%s.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR\n' {1..100}
または:
seq -f 'file1 -int sch%g.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR' 100
または:
jot -w 'file1 -int sch%d.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR' 100
完全な出力を生成します。
ここから始めたい場合:
file1 -int sch1.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR
vimでlineを実行し、カーソルが配置されている場所で行の2番目の数字を99倍に増やして再現しますqayypw^Aq98@a
。
どこ:
qa
:a
マクロ記録開始yy
:ライン全体をYank(コピー)します。p
:以下に投稿してください。w
:次の単語に移動します(数字を含む最初の単語をスキップ)。^A
(Ctrl + A):カーソルの下に数字を増やします。カーソルの下に数字がない場合は、右側で次の数字を探します。q
: マクロ記録完了98@a
:a
マクロを98回実行します。
またはfile1 -int <something><number>.inp
、行の先頭にある場合は、その行を100回コピーして量を増やします。
perl -pe 'if (m{^file1 -int \S*?\K\d+(?=\.inp)}) {
for my $i ($& .. $& + 99) {
print;
s//$i/;
}
}' < your-file