Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Doing this using just sed seems impossible to me since you need a counter and some sort of back reference. Perhaps I'm wrong, anyway, using Perl:</p> <pre><code>use warnings; use strict; my (%sizes, %part); while(&lt;&gt;) { if (/^---- End Product ----/) { print "---- Start Product ----\n"; print "PartNumber&gt;&gt; $part{Number}\n"; for my $size (map { sprintf "%02d", $_ } 1..6) { if (not defined $sizes{$size}) { print "&lt;b&gt;Size${size}_Req&gt;&gt; 0&lt;/b&gt;\n"; } } for my $size (keys %sizes) { print "Size${size}_Req&gt;&gt; $sizes{$size}\n"; } print "Part$_&gt;&gt; $part{$_}\n" for ("Color", "Description"); print "---- End Product ----\n"; %sizes = (); %part = (); } $sizes{$1} = $2 if (/^Size(\d+)_Req&gt;&gt;\s*(\d+)/); $part{$1} = $2 if (/^Part(\w+)&gt;&gt; (.*)/); } </code></pre> <p><strong>Use</strong></p> <pre><code>perl script.pl input </code></pre> <p><strong>Output</strong></p> <pre><code>---- Start Product ---- PartNumber&gt;&gt; 123457 &lt;b&gt;Size01_Req&gt;&gt; 0&lt;/b&gt; &lt;b&gt;Size03_Req&gt;&gt; 0&lt;/b&gt; &lt;b&gt;Size05_Req&gt;&gt; 0&lt;/b&gt; &lt;b&gt;Size06_Req&gt;&gt; 0&lt;/b&gt; Size04_Req&gt;&gt; 2 Size02_Req&gt;&gt; 1 PartColor&gt;&gt; Natural PartDescription&gt;&gt; Guys Tee ---- End Product ---- ---- Start Product ---- PartNumber&gt;&gt; TPIOO9205 &lt;b&gt;Size01_Req&gt;&gt; 0&lt;/b&gt; &lt;b&gt;Size02_Req&gt;&gt; 0&lt;/b&gt; &lt;b&gt;Size03_Req&gt;&gt; 0&lt;/b&gt; &lt;b&gt;Size04_Req&gt;&gt; 0&lt;/b&gt; &lt;b&gt;Size06_Req&gt;&gt; 0&lt;/b&gt; Size05_Req&gt;&gt; 1 PartColor&gt;&gt; Natural PartDescription&gt;&gt; Black Hoodie ---- End Product ---- </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload