We have text file in below format. We need to merge three lines into singles. I tried some Unix command but it is not giving fruitful result.
sed -n '/TitanBalance/{
N
s/\n/ /p
}' Titaninput.txt
Text content:
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process>
<suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000101090593</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>1</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>6666666666666</ns:ID></ns:DocumentID><ns:LineNumber>1</ns:LineNumber></ns:SalesOrderReference><companycode>1488</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance>
</DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process>
<suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000100007893</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>1</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>88888888888888</ns:ID></ns:DocumentID><ns:LineNumber>3</ns:LineNumber></ns:SalesOrderReference><companycode>1488</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance>
</DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process>
<suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000100679537</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>100</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>00000000000</ns:ID></ns:DocumentID><ns:LineNumber>1</ns:LineNumber></ns:SalesOrderReference><companycode>1484</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance>
</DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process>
<suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000100663093</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>19</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>00000000000000</ns:ID></ns:DocumentID><ns:LineNumber>2</ns:LineNumber></ns:SalesOrderReference><companycode>1484</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance>
</DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process>
<suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000101394699</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>2</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>5555555555555</ns:ID></ns:DocumentID><ns:LineNumber>5</ns:LineNumber></ns:SalesOrderReference><companycode>1422</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance>
</DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process>
<suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000101394700</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>2</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>111111111111111</ns:ID></ns:DocumentID><ns:LineNumber>6</ns:LineNumber></ns:SalesOrderReference><companycode>1422</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance>
</DataArea></TitanBalance>
My output should come in one single line as below:
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000101090593</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>1</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>6666666666666</ns:ID></ns:DocumentID><ns:LineNumber>1</ns:LineNumber></ns:SalesOrderReference><companycode>1488</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
sed is great for doing s/old/new on individual lines but for anything more than that just use awk for clarity, simplicity, robustness, efficiency, maintainability, adaptability, portability, etc.
I think this might be what you're trying to do, using any awk and assuming you do have a blank line between each block of 3 lines as shown in the sample input in your question:
$ awk -v RS= -F'\n' -v OFS= '{$1=$1} 1' Titaninput.txt
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000101090593</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>1</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>6666666666666</ns:ID></ns:DocumentID><ns:LineNumber>1</ns:LineNumber></ns:SalesOrderReference><companycode>1488</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000100007893</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>1</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>88888888888888</ns:ID></ns:DocumentID><ns:LineNumber>3</ns:LineNumber></ns:SalesOrderReference><companycode>1488</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000100679537</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>100</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>00000000000</ns:ID></ns:DocumentID><ns:LineNumber>1</ns:LineNumber></ns:SalesOrderReference><companycode>1484</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000100663093</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>19</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>00000000000000</ns:ID></ns:DocumentID><ns:LineNumber>2</ns:LineNumber></ns:SalesOrderReference><companycode>1484</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000101394699</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>2</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>5555555555555</ns:ID></ns:DocumentID><ns:LineNumber>5</ns:LineNumber></ns:SalesOrderReference><companycode>1422</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000101394700</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>2</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>111111111111111</ns:ID></ns:DocumentID><ns:LineNumber>6</ns:LineNumber></ns:SalesOrderReference><companycode>1422</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
In the above awk command, -v RS= -F'\n'
together tell awk to read multi-line records where records are separated by empty lines, and split each record into fields at newlines, then -v OFS=
tells awk to use nothing when separating fields for output and {$1=$1}
tells awk to reconstruct the current record, replacing all FSs (\n
s) with OFSs (nothing). Then 1
is shorhand for {print}
to print the current record.
Read the awk man page or the gawk manual for more info:
-v RS=
- https://www.gnu.org/software/gawk/manual/gawk.html#Multiple-Line-F'\n'
- https://www.gnu.org/software/gawk/manual/gawk.html#Full-Line-Fields-v OFS=
- https://www.gnu.org/software/gawk/manual/gawk.html#Output-Separators{$1=$1}
- https://www.gnu.org/software/gawk/manual/gawk.html#Changing-Fields1
- https://www.gnu.org/software/gawk/manual/gawk.html#Truth-Values and https://www.gnu.org/software/gawk/manual/gawk.html#Expression-Patterns.Alternatively the above can be implemented with just paste
:
$ paste -d '\0' - - - - < Titaninput.txt
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000101090593</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>1</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>6666666666666</ns:ID></ns:DocumentID><ns:LineNumber>1</ns:LineNumber></ns:SalesOrderReference><companycode>1488</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000100007893</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>1</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>88888888888888</ns:ID></ns:DocumentID><ns:LineNumber>3</ns:LineNumber></ns:SalesOrderReference><companycode>1488</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000100679537</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>100</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>00000000000</ns:ID></ns:DocumentID><ns:LineNumber>1</ns:LineNumber></ns:SalesOrderReference><companycode>1484</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000100663093</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>19</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>00000000000000</ns:ID></ns:DocumentID><ns:LineNumber>2</ns:LineNumber></ns:SalesOrderReference><companycode>1484</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000101394699</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>2</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>5555555555555</ns:ID></ns:DocumentID><ns:LineNumber>5</ns:LineNumber></ns:SalesOrderReference><companycode>1422</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
<TitanBalance releaseID="9999.999" languageCode="en" xmlns="www.titan.com" xmlns:ns="www.titan.org"><ns:ApplicationArea><ns:Sender><ns:LogicalID>ATG</ns:LogicalID><ns:ComponentID>0.0.1.1</ns:ComponentID></ns:Sender><ns:CreationDateTime>2024-05-16T09:26:02.378+02:00</ns:CreationDateTime><ns:DAD>556666660000</ns:DAD></ns:ApplicationArea><DataArea><ns:Process><ns:ActionList><ns:actionFile expressionLanguage="text" actionCode="Modified">supplier</ns:actionFile></ns:ActionList></ns:Process><suppementaryBalance><ProductItem><ns:ItemID><ns:ID>000000000101394700</ns:ID></ns:ItemID><ns:UOMCode>EA</ns:UOMCode></ProductItem><ns:supplierdQuantity>2</ns:supplierdQuantity><ns:SalesOrderReference><ns:DocumentID><ns:ID>111111111111111</ns:ID></ns:DocumentID><ns:LineNumber>6</ns:LineNumber></ns:SalesOrderReference><companycode>1422</companycode><ns:Type>Standard</ns:Type><FulfilmentSourceType>new arrival</FulfilmentSourceType></suppementaryBalance></DataArea></TitanBalance>
or, if you don't really have a blank line between each block of 3 input lines, then:
$ seq 9 | awk '{printf "%s%s", $0, (NR%3 ? "" : ORS)}'
123
456
789
which can be reduced to:
$ seq 9 | paste -d '\0' - - -
123
456
789
Thanks to @triplee for pointing out that while paste -d ''
, as I originally had, would work in GNU paste, paste -d '\0'
is necessary for portability to all POSIX-compliant awks, including the BSD one on MacOS, and means no separator will be used (not a NUL char will be used) between the concatenated lines, see the POSIX paste
spec.