Python은 파일 끝에서 두 번째 패턴 발생 위에 줄을 삽입합니다.

Python은 파일 끝에서 두 번째 패턴 발생 위에 줄을 삽입합니다.

아래와 같이 여러 개의 RHEL kickstart 파일이 포함되어 있습니다.%릴리스...%끝다양한 섹션 사이에는 많은 Python 코드 줄이 있습니다.

%post
.....
.....
%end
%post
.....
.....
%end
%post
.....
.....
%end

두 번째 검색 패턴이 나타나기 전에 일부 데이터가 포함된 새 행을 삽입하려고 합니다(위)."%끝"끝부터 시작합니다(EOF). 모든 팁/입력에 크게 감사드립니다.

답변1

spam두 번째 블록의 마지막 위치에 텍스트를 삽입하는 Python 코드 조각 %post..%end:

with open('input') as fp:
    lines = fp.readlines()

locs = [i for i, val in enumerate(lines) if val == '%end\n']
lines.insert(locs[-2], 'spam' + '\n')

with open('input', 'w') as fp:
    fp.write(''.join(lines))

답변2

끼워 넣다"일부 데이터"마지막 패턴 라인 앞에.
grep+awk해결책:

awk -v n="$(($(grep -c '^%end' inputfile) - 1))" \
'/^%end/{ if (++cnt == n) print "some data" }1' inputfile

산출:

%post
.....
.....
%end
%post
.....
.....
some data
%end
%post
.....
.....
%end

관련 정보