2013-06-19 43 views
2

如何删除CSV文件中除给定范围之间的行(或几行或不连续)之间的行的范围...假设我需要删除CSV文件的前五行,但保留第三行,您如何实现这一点。我试图用SED得到这个,但没有帮助。删除CSV文件中除了给定范围之间的行之外的行的范围

sed '1,5d;3!d' filenname.CSV > tempfilename.txt 

我知道我可以通过给范围内

sed '1,2d;4,5d' filenname.CSV > tempfilename.txt 

然而做到这一点,不知道是否有一个变通,我可以指定一个范围,删除,并给线除外(或线或不连续)在

请纠正,如果我错了。

由于提前, Dhruuv

回答

5

重铸你sed例如下面

sed '1,5{3p;d}' filenname.CSV > tempfilename.txt 

还是从范围1-5

sed '1,5{3p;4p;d}' filenname.CSV > tempfilename.txt 
0
perl -ne 'print unless 1..5 and not 3..3' filename.CSV > tempfilename.txt 

会工作,如果你可以使用Perl,而不是sed的。

3

1_CR删除一切打印的第三和第四行有您正在寻找的答案但为了好玩,你可以使用awk

awk '!(NR>0 && NR<6) || NR==3' file 

忽略第1行到第5行,但打印第3行和所有其余的行。

+0

感谢你的快速反应。我需要得到更多熟悉SED和awk,因为我是shell脚本新手......非常感谢。 – Dhruuv

2

这可能会为你工作:

sed '1,5{3!d}' file 

或:

sed '1,5!b;3!d' file 

或:

sed '3b;1,5d' file 
+0

谢谢Potong ...以上解决方案也可以...感谢您的帮助... – Dhruuv