2013-06-19 49 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