![문자 뒤에 줄 삽입](https://linux55.com/image/169490/%EB%AC%B8%EC%9E%90%20%EB%92%A4%EC%97%90%20%EC%A4%84%20%EC%82%BD%EC%9E%85.png)
긴 줄 파일 예에 데이터가 있습니다.
<currency>USD</currency><amount>111</amount><amountf>111/amountf><recv_confirms>2</recv_confirms><fee>22</fee><feef>2222</feef><direction>incoming</direction><status>1050</status><sent_to></sent_to><send_txid></send_txid><checkout><type>button</type><invoice>8888</invoice><item_name>Name - Invoice #8888</item_name><src_currency>USD</src_currency><quantity>1</quantity><price_per_item>25.00000000</price_per_item><subtotal>25.00000000</subtotal><total>25.00000000</total>
다음과 같이 되려면 이 데이터가 필요합니다.
<currency>USD</currency>
<amount>111</amount>
<amountf>111/amountf>
<recv_confirms>2</recv_confirms>
<fee>22</fee>
<feef>2222</feef>
<direction>incoming</direction>
<status>1050</status>
<sent_to></sent_to>
<send_txid></send_txid>
<checkout>
<type>button</type>
<invoice>8888</invoice>
<item_name>Name - Invoice #8888</item_name>
<src_currency>USD</src_currency>
<quantity>1</quantity>
<price_per_item>25.00000000</price_per_item>
<subtotal>25.00000000</subtotal>
<total>25.00000000</total>
일부 행에는 <checkout>
데이터가 없으며 다음을 포함하지 않습니다./
어떻게 해야 하나요? 또는sed
perl
답변1
XML 파일을 들여쓰기하는 도구를 사용하는 것이 좋습니다.
xmllint -format -recover nonformatted.xml > formatted.xml
답변2
GNU 사용 sed
:
sed -E 's;<([^/]);\n<\1;2g' file
<currency>USD</currency>
<amount>111</amount>
<amountf>111/amountf>
<recv_confirms>2</recv_confirms>
<fee>22</fee>
<feef>2222</feef>
<direction>incoming</direction>
<status>1050</status>
<sent_to></sent_to>
<send_txid></send_txid>
<checkout>
<type>button</type>
<invoice>8888</invoice>
<item_name>Name - Invoice #8888</item_name>
<src_currency>USD</src_currency>
<quantity>1</quantity>
<price_per_item>25.00000000</price_per_item>
<subtotal>25.00000000</subtotal>
<total>25.00000000</total>
답변3
sed
@guillermochamorro는 첫 번째 라인을 깨지 않기 위해 약간의 골프를 쳤습니다.
sed -E 's;([^^])(<[^/]);\1\n\2;g' file1