2

如何删除CSV文件中的一系列行,除了给定范围之间的一行(或几行或不连续的行)......假设我需要删除CSV文件的前五行但保留第3行照原样,您如何实现这一目标。我试图使用 SED 来解决这个问题,但没有帮助。

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

我知道我可以通过将范围指定为

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

但是,想知道是否有解决方法,我可以指定要删除的范围,并在其间给出一行(或不连续的行)的例外情况

如果我错了,请纠正。

提前致谢, 德鲁夫

4

4 回答 4

5

将您的示例重铸sed为以下

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

或者打印第 3 行和第 4 行,同时删除 1-5 范围内的所有其他内容

sed '1,5{3p;4p;d}' filenname.CSV > tempfilename.txt
于 2013-06-19T15:39:16.567 回答
3

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

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

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

于 2013-06-19T15:45:58.873 回答
2

这可能对您有用:

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

或者:

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

或者:

sed '3b;1,5d' file
于 2013-06-19T20:44:00.433 回答
0
perl -ne 'print unless 1..5 and not 3..3' filename.CSV > tempfilename.txt

如果您可以使用 perl 而不是 sed,将会起作用。

于 2013-06-19T15:35:28.447 回答