해시태그 댓글을 재귀적으로 복사합니다.

해시태그 댓글을 재귀적으로 복사합니다.

두 개의 파일이 있는데 그 중 하나에는 다음과 같은 블록이 포함되어 있습니다.

<record>
line1
line2
line3
#model bla bla bla
</record>

그리고 다른 파일에는 정확히 동일한 수의 블록이 있지만 해시태그 주석은 없습니다.

<record>
line4
line5
line7
line8
line9
line10
</record>

그래서 제가 하고 싶은 것은 해시태그를 첫 번째 파일의 첫 번째 블록에서 두 번째 파일의 첫 번째 블록으로 복사하여 다른 파일도 다음과 같이 보이도록 하는 것입니다.

<record>
line4
line5
line7
line8
line9
line10
#model bla bla bla
</record>

답변1

동일한 순서로 작은 코드를 사용하고 싶은 경우python

import os
os.rename("second","second~")
a=[]
f=open("first","r")
lines=f.readlines()
b=-1
for line in lines:
    if "</record>" in str(line):
        if b!=-1:
            a.append(lines[b])
        else:
            print "</record> found in first line"
    b=b+1
f.close()
b=0
destination = open("second","w")
source = open("second"+"~","r")
for line in source:
    if "</record>" in str(line):
        destination.write(a[b])
        b=b+1
    destination.write(line)
source.close()
destination.close()

참고: 첫 번째는 태그가 포함된 파일이고, 두 번째는 태그가 없는 파일입니다.

답변2

귀하의 예에서 보면 다음과 같은 간단한 awk 명령으로 충분할 것 같습니다.

awk '/<\/record/{"grep \\^\\# file1"|getline a; print a};1' file2

또는 질문에 추가하는 것을 잊어버린 다른 답변의 주석에 공개된 추가 요구 사항에서 볼 수 있듯이 해시 태그가 <record>블록 외부에 나타날 수 있습니다.

sed '/<record>/,/<\/record>/!d;/^#/!d' < file1 |
  awk '/<\/record/{getline a < "-"; print a};1' file2

관련 정보