我需要删除文本文件中的奇数行以进行下采样.我找到了这个命令,

awk 'NR%2==0' file

但它只打印终端中的奇数行.如何真正go 除它们?

我真的不喜欢偶数或奇数,我希望他们从文件中删除或打印在另一个文件中.这只在终端上打印.

推荐答案

%是模数运算符,NR是当前行号,因此NR%2==0仅对偶数行为真,并将调用它们的默认规则({ print $0 }).因此,将的输出重定向到一个新文件:

啊 'NR%2==0' infile > outfile

塞德

你可以用塞德完成同样的事情.devnulls答案展示了如何用GNU 塞德来做.

keep odd lines

塞德 'n; d' infile > outfile

keep even lines

塞德 '1d; n; d' infile > outfile

Linux相关问答推荐

Linux内核中维护进程无关寄存器失败

仅使用Find搜索32字符长的目录

并行函数的最后一个实例的状态

如何从 2 个文件中获取内容并使用 shell 脚本将该内容附加到新文件中

Linux 如何将主机文件作为用户的输入并将其调用到脚本中

函数在 shell 脚本中抛出错误语法错误:} unexpected

如何有效地使用 grep?

在 64 位 Linux 操作系统上编译 32 位程序导致致命错误

从 shell 将多个 .sql 转储文件导入 mysql 数据库

当命令太长时,命令行会自动覆盖

如何在 Linux 中为 C 或 C++ 的进程设置 CPU 亲和性?

在 C 中设置环境变量

我想为 Linux 内核做贡献

如何在不重新打印的情况下更新终端中的打印消息

如何从 linux 的命令行将 Sublime Text 2 文件打开到选项卡,而不是新窗口

如何在 Linux 中通过控制台输出启动 Tomcat?

区分 Windows 和类 Unix 系统的 Makefile

比较文件的日期 bash

Docker:您是否try 连接到没有 TLS 的启用 TLS 的守护进程?

通过 linux x86-64 函数调用保留了哪些寄存器