特定の変更を適用して行を複数回(100)繰り返す方法

特定の変更を適用して行を複数回(100)繰り返す方法

次の行を含むファイルがあります。

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@aaマクロを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

おすすめ記事