如何重复删除文件中的行数

如何重复删除文件中的行数

我读了如何使用 shell 命令删除 ascii 文件的前 n 行?,很有帮助。但是我有一个文件如下(请考虑 2 列作为 2 个不同的文件):

1 4
1 4
1 4
1 4
1 4
3 5
3 5
3 5
3 5
3 5
7 5
7 5
7 5
7 5
7 5

我需要删除第 2-5 行,然后删除第 7-10 行,依此类推(有效输出为 1、3、7 和 4、5、5)。

我知道模式(数字)重复的行数。但是我不知道是否每次它都会遵循相同的模式,例如这里的 1, 3, 7 下一个文件可以有 4, 6, 1 或 4, 5, 5 所以我需要使其基于行数而不是 grep价值观。

谁能告诉我如何重复删除行?

答案1

听起来你正在寻找uniq

或者,从评论中:

sed '2,5d;7,10d;12,$d'

答案2

如果您真正要求的是输出文件的每 n 行:

cat file | perl -ne '$. % 5 or print'

可能:

cat file | perl -ne '($.-1) % 5 or print'

答案3

使用以下命令

cat filename | sort | uniq > filename2

相关内容