파일에서 특정 XML 태그가 나타날 때마다 개행 문자를 삽입하려면 어떻게 해야 합니까?
</Data>
내 파일에 태그가 여러 개 있고 각 태그 뒤에 줄바꿈을 삽입 하고 싶습니다.</Data>
나는 다양한 조합을 시도했지만 sed
결코 개행 문자를 삽입하지 않습니다 :(
최신은sed '/<\/Data\>/ a \n'
감사해요!
답변1
sed 's:</Data>:&\
:g'
$'\<char>'
또는 확장된 이스케이프 시퀀스를 지원하는 bash 또는 다른 쉘에서 sed를 호출하는 경우 :
sed 's:</Data>:&\'$'\n'':g'
또는 GNU를 사용하십시오 sed
:
sed 's:</Data>:&\n:g'
예를 들어:
$ printf 'foo</Data>bar</Data>etc\n'
foo</Data>bar</Data>etc
$
$ printf 'foo</Data>bar</Data>etc\n' | sed 's:</Data>:&\n:g'
foo</Data>
bar</Data>
etc
답변2
이것은 가장 우아하지는 않지만 작동합니다.
sed 's/\(<\/Data>\)/\1\n/ig'
답변3
sed '/<\/Data>/ a \\n'
개행 문자가 삽입되지만 문자열이 한 줄에 여러 번 존재하는 경우(일반적인 xml은 긴 줄일 수 있음) 각 항목 뒤에 개행 문자를 추가하는 대신 그 뒤에 개행 문자를 추가합니다.
각 발생 후에 실제로 래핑을 수행하려면 sed 's/\(<\/Data>\)/\1\n/g'
이렇게 해야 합니다.
답변4
파이썬으로 시도해 보았습니다.
cat inputfile
san</Data>abhi</Data>san
파이썬
#!/usr/bin/python
g="</Data>"
import re
k=open('k.txt','r')
for i in k:
m="{0}".format(g+"\n")
q=re.sub(g,"{0}",i).format(m)
print q
산출
san</Data>
abhi</Data>
san