删除CSV文件中的一系列行,但给定范围之间的行除外

时间:2013-06-19 15:23:55

标签: unix csv sed

如何删除CSV文件中的一系列行,除了给定范围之间的一行(或几行或不连续)...让我说我需要删除CSV文件的前五行但保留第3行,你是如何实现这一目标的。我试图使用SED但没有帮助。

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

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

来做到这一点
sed '1,2d;4,5d' filenname.CSV > tempfilename.txt

然而,想知道是否有解决办法,我可以指定一个范围来删除,并给出一行(或多行或不连续)之间的例外

如果我错了,请纠正。

提前致谢, Dhruuv

4 个答案:

答案 0 :(得分:5)

将您的sed示例转播到下面的

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

或者在删除范围1-5

中的所有其他内容时打印第3行和第4行
sed '1,5{3p;4p;d}' filenname.CSV > tempfilename.txt

答案 1 :(得分:3)

1_CR有您正在寻找的答案,但为了好玩,您可以使用awk

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

忽略第1行至第5行,但打印第3行和所有剩余行。

答案 2 :(得分:2)

这可能对您有用:

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

或:

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

或:

sed '3b;1,5d' file

答案 3 :(得分:0)

perl -ne 'print unless 1..5 and not 3..3' filename.CSV > tempfilename.txt
如果你可以使用perl而不是sed,

会起作用。