我有一个.CSV文件,它在标题之后几乎没有记录,但是,在文件结束之前有一个重复的标题,之后重复的标题是更多的记录(我不需要)。有没有办法可以检查第二次出现的标题模式,并删除该重复标题后的其余文件?以下是该文件的示例。
col0,col1,col2,col3,col4,col5,col6,
1value0,1value1,1value2,1value3,1value4,1value5,1value6,
2value0,2value1,2value2,2value3,2value4,2value5,2value6,
3value,3value1,3value2,3value3,3value4,3value5,3value6,
2value0,4value1,4value2,4value3,4value4,4value5,4value6,
5value0,5value1,5value2,5value3,5value4,5value5,5value6,
6value0,6value1,6value2,6value3,6value4,6value5,6value6,
,,,,,,,
,,,,,,,
,,,,,,,
(n-1)value0,(n-1)value1,(n-1)value2,(n-1)value3,(n-1)value4,(n-1)value5,(n-1)value6,<登记/> (n)value0,(n)value1,(n)value2,(n)value3,(n)value4,(n)value5,(n)value6,
col0,col1,col2,col3,col4,col5,col6,
1,不需要的,记录,后,重复,标题
2,不需要的,记录,后,重复,标题
3,不需要的,记录,后,重复,标题
这里我期待的输出如下所示
col0,col1,col2,col3,col4,col5,col6,
1value0,1value1,1value2,1value3,1value4,1value5,1value6,
2value0,2value1,2value2,2value3,2value4,2value5,2value6,
3value,3value1,3value2,3value3,3value4,3value5,3value6,
2value0,4value1,4value2,4value3,4value4,4value5,4value6,
5value0,5value1,5value2,5value3,5value4,5value5,5value6,
6value0,6value1,6value2,6value3,6value4,6value5,6value6,
,,,,,,,
,,,,,,,
,,,,,,,
(n-1)value0,(n-1)value1,(n-1)value2,(n-1)value3,(n-1)value4,(n-1)value5,(n-1)value6,<登记/> (n)value0,(n)value1,(n)value2,(n)value3,(n)value4,(n)value5,(n)value6,
P.S:我有GNU sed版本4.1.5和GNU Awk 3.1.5
非常感谢任何帮助。
答案 0 :(得分:2)
这可能对您有用(GNU sed 4.2.1):
sed 's/,/\n/8;T;s/\n.*//;q' file
这可以通过尝试自己替换第8个,
并且如果它无法像往常一样挽救并打印线来实现。大多数行(在您的示例中)只有7个逗号,因此将保持不变,而包含重复标题的行将缩短并在处理退出时打印出来。
答案 1 :(得分:2)
可能比它需要的更复杂:
awk 'BEGIN{flag=0} $0==head{flag=1}; NR==1{head=$0}; flag==0{print $0}' file
答案 2 :(得分:2)
试试这个:
awk 'a~$0{exit}NR==1{a=$0}1' file
答案 3 :(得分:0)
尝试
awk 'd<2{print} /col1, col2, col3 , col4 , col5, col6/{d++}' file