![Python은 파일 끝에서 두 번째 패턴 발생 위에 줄을 삽입합니다.](https://linux55.com/image/133096/Python%EC%9D%80%20%ED%8C%8C%EC%9D%BC%20%EB%81%9D%EC%97%90%EC%84%9C%20%EB%91%90%20%EB%B2%88%EC%A7%B8%20%ED%8C%A8%ED%84%B4%20%EB%B0%9C%EC%83%9D%20%EC%9C%84%EC%97%90%20%EC%A4%84%EC%9D%84%20%EC%82%BD%EC%9E%85%ED%95%A9%EB%8B%88%EB%8B%A4..png)
아래와 같이 여러 개의 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