Remove previous line if next & previous lines have same 4th character.

I want to remove commands having no output. In below text file.

bash-3.2$ cat abc_do_it.txt
grpg10so>show trunk group all status
grpg11so>show trunk group all status
grpg12so>show trunk group all status
GCPKNYAIGT73IMO         1440  1345       0     0     94     0     0 INSERVICE     93%    0% (    1 )
grpg13so>show trunk group all status
grpg14so>show trunk group all status
grpg15so>show trunk group all status
grpg16so>show trunk group all status
WHPLNYGRDS3S2B1B        336   312        0     1      0     0     0 INSERVICE     92%    6% (   23 )
grpg1so>show trunk group all status
grpg2so>show trunk group all status
NYCMNY54DS1S8Y1O        456   453        0     0      2     0     0 INSERVICE     99%    0% (    1 )
grpg3so>show trunk group all status
grpg4so>show trunk group all status
grpg5so>show trunk group all status
grpg6so>show trunk group all status
DRPKNYDP03TS2A1I        504   136        0     8      0     0     0 INSERVICE     26%   71% (  360 )
NYCQNYWSCM3SWW1O        336   323        0     0     12     0     0 INSERVICE     96%    0% (    1 )
grpg7so>show trunk group all status
grpg8so>show trunk group all status
grpg9so>show trunk group all status
mtng10so>show trunk group all status
NYCMNYBX47T1IM1I        1776  1752       0     0      0     0     0 INSERVICE     98%    1% (   24 )
WNYKNYBCCM1SWW1I        336   22         0     5      0     0     0 INSERVICE      6%   91% (  309 )
WNYKNYBCCM1SWW1O        336   131        0     0      0     0     0 INSERVICE     38%   61% (  205 )
WHPLNY02CA23IM1O        720   477        0     0     29     0     0 INSERVICE     66%   29% (  214 )
mtng11so>show trunk group all status
mtng1so>show trunk group all status
WNYKNYBCCM1SWW1I        96    0          0     0      0     0     0 INSERVICE      0%  100% (   96 )
NYCMNY1306TS2A2I        384   336        0     0      0     0     0 INSERVICE     87%   12% (   48 )
WHPLNY02CA0SIM1I        672   445        0    11      0     0     0 INSERVICE     66%   32% (  216 )
mtng2so>show trunk group all status
WNYKNYBCCM1SWW1I        240   0          0     0      0     0     0 INSERVICE      0%  100% (  240 )
WHPLNY02CA23IM1O        1080  1020       0     0     59     0     0 INSERVICE     94%    0% (    1 )
WNYKNYBCCM1SWW1O        144   2          0     0      7     0     0 INSERVICE      1%   93% (  135 )
mtng3so>show trunk group all status
WHPLNYWP08TS2A1I        192   191        0     0      0     0     0 INSERVICE     99%    0% (    1 )
WNYKNYBCCM1SWW1O        192   3          0     0      9     0     0 INSERVICE      1%   93% (  180 )
mtng4so>show trunk group all status
NYCMNY83CM2SWW1O        672   552        0     0    118     0     0 INSERVICE     82%    0% (    2 )
NYCMNYBSDS2S2B1B        48    0          0     0      0     0     0 INSERVICE      0%  100% (   48 )
NYCMNYBSDS0S2B1B        48    0          0     0      0     0     0 INSERVICE      0%  100% (   48 )
mtng5so>show trunk group all status
mtng6so>show trunk group all status
DRPKNYDP03TS2A1I        48    0          0     0      0     0     0 INSERVICE      0%  100% (   48 )
mtng7so>show trunk group all status
WHPLNY02CA0SIM1I        624   272        0    16      0     0     0 INSERVICE     43%   53% (  336 )
mtng8so>show trunk group all status
mtng9so>show trunk group all status
NYCMNY3723TS2A1I        240   56         0    27      0     0     0 INSERVICE     23%   65% (  157 )
nwtg1so>show trunk group all status
NWTPMOAB00T1PT1B        144   141        0     0      2     0     0 INSERVICE     97%    0% (    1 )
nwtg2so>show trunk group all status
nwtg3so>show trunk group all status
INDPMOXCGT00WW1O        1440  1343       0     0     49     0     0 INSERVICE     93%    3% (   48 )
nwtg4so>show trunk group all status
rpkg10so>show trunk group all status
rpkg11so>show trunk group all status
RCPKNJ02EADSVM1O        168   161        0     0      2     0     0 INSERVICE     95%    2% (    5 )
rpkg1so>show trunk group all status
rpkg2so>show trunk group all status
NWRKNJ0205TS2A1O        120   118        0     0      1     0     0 INSERVICE     98%    0% (    1 )
rpkg3so>show trunk group all status
rpkg4so>show trunk group all status
rpkg5so>show trunk group all status
rpkg6so>show trunk group all status
rpkg7so>show trunk group all status
rpkg8so>show trunk group all status

bash-3.2$

try:

tac abc_do_it.txt | awk 'BEGIN{l=1}{if ($0 !~ />/ ) {print; l=0} else {if (l==0) {print;} ; l=1}}' | tac

Thanx rdrtx1 , but problem is tac is not working in my system.

The above cat abc_do_it output is taken from one of one line command , I want to use |after that and then get the desired result.

tgstats `trunkgroups g | egrep "mtn|grp|rpk|nwt" | awk '{print $1}' | sort -u` | egrep -v Totals | egrep "^[mtn|grp|rpk|nwt]|\% \(" > abc_do_it

I want to use tgstats `trunkgroups g | egrep "mtn|grp|rpk|nwt" | awk '{print $1}' | sort -u` | egrep -v Totals | egrep "^[mtn|grp|rpk|nwt]|\% \(" | some_command_to_get_desired_output.

AWK logic is very good , its working but tac is not present in my system and I am not system admin.

try: instead of tac use:

perl -e 'print reverse <>'

Thanks !!!

It worked. :slight_smile: