Bash 如何使用sed和uniq删除除列之外的所有额外行,如最后给出的结果?

Bash 如何使用sed和uniq删除除列之外的所有额外行,如最后给出的结果?,bash,awk,sed,uniq,Bash,Awk,Sed,Uniq,我有一个像上面这样的文件。使用sed/uniq/awk如何删除所有标题、横幅文本等,如下所示: . THE EAST INDIA COMPANY PVT LTD THE EAST INDIA COMPANY PVT LTD

我有一个像上面这样的文件。使用sed/uniq/awk如何删除所有标题、横幅文本等,如下所示:

.

                             THE EAST INDIA COMPANY PVT LTD                                  
                             THE EAST INDIA COMPANY PVT LTD                                  

            Date : 14/03/2016           Time : 12:45:15          Page :     1

Office  : INDIANA.  Code  :  101      Description  :  TSHIRTS                              Month : 03/2016
Office  : INDIANA.  Code  :  101      Description  :  TSHIRTS                           Month : 03/2016

+=====================================================================================================+
! Slno ! CrId   ! Name Of Customer         ! Item Code & Descrptn     !       Amount  !               !
  Slno   CrId     Name Of Customer           Item Code & Descrptn             Amount                  !
+=====================================================================================================+
!    2 ! 234567 ! CHARLES DICKENS          ! 101   /   TSHIRTS        !    65,805.00  !               !
!    3 ! 345678 ! ROOSEVOLT HUGAS          ! 101   /   TSHIRTS        !    50,140.00  !               !
!    4 ! 456789 ! RICH HILLSIDE            ! 101   /   TSHIRTS        !    48,130.00  !               !
!    5 ! 567890 ! SAMUEL PETER             ! 101   /   TSHIRTS        !    51,750.00  !               !
+-----------------------------------------------------------------------------------------------------+




Prepared by  :                               :                                                  MANAGER
                    THE EAST INDIA COMPANY PVT LTD       
                    THE EAST INDIA COMPANY PVT LTD       

                Date : 14/03/2016          Time : 12:45:14           Page :  2                                                                                                       
Office  : INDIANA.  Code : 102             Description  :  PANTS                        Month : 03/2016
Office  : INDIANA.  Code : 102             Description  :  PANTS                        Month : 03/2016

+=====================================================================================================+
! Slno ! CrId   ! Name Of Customer         ! Item Code & Descrptn     !       Amount  !               !
  Slno   CrId     Name Of Customer           Item Code & Descrptn             Amount                  !
+=====================================================================================================+
!    1 ! 234567 ! CHARLES DICKENS          ! 102   /   PANTS          !       915.00  !               !
!    2 ! 456789 ! RICH HILLSIDE            ! 102   /   PANTS          !     1,610.00  !               !
+-----------------------------------------------------------------------------------------------------+




Prepared by  :                  :                                               MANAGER
这是一个很长的文件,但我只在这里发布了一个样本。 关于这一点还有一个问题,我想使用Awk从整个列表中添加每个客户的值,并打印客户名称和总金额。请提供一个解决方案。

谢谢您的帮助

! Slno ! CrId   ! Name Of Customer         ! Item Code & Descrptn     !       Amount  !               ! 
!    2 ! 234567 ! CHARLES DICKENS          ! 101   /   TSHIRTS        !    65,805.00  !               !
!    3 ! 345678 ! ROOSEVOLT HUGAS          ! 101   /   TSHIRTS        !    50,140.00  !               !
!    4 ! 456789 ! RICH HILLSIDE            ! 101   /   TSHIRTS        !    48,130.00  !               !
!    5 ! 567890 ! SAMUEL PETER             ! 101   /   TSHIRTS        !    51,750.00  !               !
! Slno ! CrId   ! Name Of Customer         ! Item Code & Descrptn     !       Amount  !               !
!    1 ! 234567 ! CHARLES DICKENS          ! 102   /   PANTS          !       915.00  !               !
!    2 ! 456789 ! RICH HILLSIDE            ! 102   /   PANTS          !     1,610.00  !               !
grep '^\!.*\!' < theFile.txt

也许您可以研究如何将金额提示设置为客户列表的格式。很抱歉,这是一个与我的办公室相关的列表,但我已经创建了所有虚拟项目,例如将T恤的基本工资和固定个人津贴替换为裤子等,以隐藏我办公室的身份。我从没想过这会是一个虚假的借口。谢谢你的快速回复。它工作得很好。请同时回答我的第二个问题end@adam1969in,所以不是编码服务!对不起,我是awk的初学者。我不知道使用“for”循环重复搜索模式的正确命令,在本例中,是Customer id并添加其值。非常好的一个。但是为什么它是按客户id的相反顺序打印的呢?谢谢你,先生。如果你能回答关于订购的问题,我会发布一个解决方案,作为你进一步了解awk的动力。
$ awk -F! '/^!/{gsub(",","",$6); 
                if($6==$6+0)a[$4]+=$6;
                else{h1=$4;h2=$6}}  
            END{print h1,h2; for(k in a) print k,a[k]}' mess

 Name Of Customer                 Amount
 SAMUEL PETER              51750
 RICH HILLSIDE             49740
 CHARLES DICKENS           66720
 ROOSEVOLT HUGAS           50140
 ADOLF HITLER              57080