我读了如何使用 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