如何删除unix中非分隔文件中的行

时间:2014-07-09 14:05:48

标签: unix awk grep nawk awk-formatting

我想删除基于“CLIENT TOTAL”的行和后续的单位行,直到下一个名字。
“CLIENT TOTAL”行之后的单位行数(即30.0和15.0行)可能会有所不同,直到下一个名称。 最重要的是,文件没有分隔。 以下是我的输入文件。 INPUT:

RELATIVITY/O F   32629 DT MBSA  
HALL             15.0             5,850
HALL             30.0            21,650
RELATIVITY/O F   34145 DT MBSA  
HALL             30.0            10,850
*CLIENT TOTAL RELATIVITY/O F     38,350
                 30.0            32,500
                 15.0             5,850
PFIZER           96607 DT MBSA  
HALL             15.0            32,700
HALL             30.0            21,300
PFIZER           96609 DT MBSA  
HALL             60.0            30,200
HALL             75.0           182,100
HALL             90.0            67,700
*CLIENT TOTAL PFIZER            334,000
                 90.0            67,700
                 30.0            21,300
                 15.0            32,700

我想要我的输出如下 输出:

RELATIVITY/O F   32629 DT MBSA  
HALL             15.0             5,850
HALL             30.0            21,650
RELATIVITY/O F   34145 DT MBSA  
HALL             30.0            10,850
PFIZER           96607 DT MBSA  
HALL             15.0            32,700
HALL             30.0            21,300
PFIZER           96609 DT MBSA  
HALL             60.0            30,200
HALL             75.0           182,100
HALL             90.0            67,700

1 个答案:

答案 0 :(得分:1)

这可能对您有用:

awk '/CLIENT TOTAL/||/^[[:space:]]/{next}1' file

说明:

awk '
  # If line contains "CLIENT TOTAL" or starts with whitespace, skip it
  /CLIENT TOTAL/ || /^[[:space:]]/ { next }
  # Otherwise, print it
  1
' file