Bash 如何使用sed和uniq删除除列之外的所有额外行,如最后给出的结果?
我有一个像上面这样的文件。使用sed/uniq/awk如何删除所有标题、横幅文本等,如下所示: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
.
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