Необходимо добавить скопированный текст из вышеуказанной строки в файл к следующей строке, где он должен быть размещен - PullRequest
0 голосов
/ 28 марта 2012

Мне нужно скопировать текст из приведенной выше строки, который соответствует «DIV (»), и поместить значение в строку, где отображается промежуточный итог. Промежуточный итог отсутствует в отчете. Мы должны добавить его также в отчет вместе со значениями.

Пожалуйста, помогите мне в этом. Как написать сценарий оболочки или используя awk или sed.

Формат отчета:

03/27/2012 -   Emails Counts

Test1 DIV(12345)                  
Storenum    Add Change
----------- ---- ------
Store1      1      0                    
            ---- ------
            1      0
Test2 DIV(435335)                
Storenum    Store Name       Add Change 
----------- --------------- ---- ------
Store2        Test Store2     2      1
Store3        Test Store3     5      1
Store4        Test Store4     0      1
                            ---- ------
                              7      3
                            ---- ------                                    
Grand Total                  8       3 

В формате

03/27/2012 -   Emails Counts

Test1 DIV(12345)                  
Storenum                    Add Change
-----------                 ---- ------
Store1                       1      0                    
                            ---- ------
Test1 DIV(12345) Subtotal    1      0
Test2 DIV(435335)                
Storenum    Store Name       Add Change 
----------- --------------- ---- ------
Store2        Test Store2     2      1
Store3        Test Store3     5      1
Store4        Test Store4     0      1
                            ---- ------
Test2 DIV(435335) Subtotal    7      3
                            ---- ------                                    
Grand Total                  8       3 

1 Ответ

0 голосов
/ 19 марта 2014
#!/usr/bin/perl -p
next unless /DIV\(/;
print;
s/\s+$//;
$div  = $_." Subtotal";
$head = <>;
$_    = <>;
$pos  = index $_, " ---- ";
sub insbl { substr $_[0], $pos, 0, " "x(27-$pos); }
insbl $head; print $head;
insbl $_;    print;
do { insbl $_ = <>; print; } until /----/;
$_ = $div.<>;
substr $_, 27, $pos-27+length($div), "";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...