특정 변경 사항을 적용하여 행을 여러 번(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을 실행하고 커서가 위치한 곳에서 줄의 두 번째 숫자를 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

답변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

관련 정보