특정 변경 사항으로 행을 여러 번(100) 반복하는 방법

특정 변경 사항으로 행을 여러 번(100) 반복하는 방법

행이 있는 파일이 있습니다.

file1 -int sch1.inp -HOST all.q:1 -NJOBS 1 -TMPLAUNCHDIR

이 변경 사항(sch2, sch3, sch4 등)으로 이 행을 100번 반복하고 싶습니다.

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에서 줄을 실행하고 줄의 두 번째 숫자를 99배로 늘려 재현하면 qayypw^Aq98@a해당 줄에 커서를 위치시킬 수 있습니다.

어디:

  • qa: a매크로 기록을 시작합니다.
  • yy: 전체 줄을 복사합니다.
  • 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

답변2

이 답변은 현재 질문을 기반으로 합니다.

#!/bin/bash

string=$(cat infile)
echo "$string" > outfile
string=${string/sch1/sch%d}

for ((i=2; i<101; i++))
do
   printf "$string\n" "$i" >> outfile
done

# uncomment to overwrite input file
# mv outfile infile

다음 답변은 현재 질문이 아닌 OP의 원래 질문을 기반으로 합니다. OP는 이 답변을 올바른 것으로 받아들였습니다.

#!/bin/bash

string=$(cat infile)
echo "$string" > outfile

for ((i=2; i<101; i++))
do
   echo "${string/sch1/sch"$i"}" >> outfile
done

# uncomment to overwrite input file
# mv outfile infile

관련 정보