linux - 删除最后一个字段的基于整行的值

标签 linux bash shell

如果我在最后一个字段中找到从 64512 到 65535 的任何值,那么整行将被删除:

示例数据:

20170101|1.0.136.0/24|2497 38040 28969
20170101|1.0.137.0/24|2497 38040 33423
20170101|1.0.138.0/24|2497 38040 64603
20170101|1.0.139.0/24|2497 38040 10136
20170101|1.0.142.0/24|2497 38040 65222
20170101|1.0.144.0/24|2497 38040 65535

预期输出:

20170101|1.0.136.0/24|2497 38040 28969
20170101|1.0.137.0/24|2497 38040 33423
20170101|1.0.139.0/24|2497 38040 10136

有什么办法吗?

最佳答案

不清楚您所说的“最后一个字段”是什么意思。此数据是否由 | 分隔,使第一行中的最后一个字段成为字符串 2497 38040 28969?或者,文本是否由空格分隔,最后一个字段只是 28969?后者更容易做到:

awk '$NF<64512 || $NF > 65535' input-file

如果是前者,您需要更加努力地工作。

关于linux - 删除最后一个字段的基于整行的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44475998/

相关文章:

shell - 使用 GUI 安装程序安装后我找不到我的 MinGW shell

linux - 在 Linux 上查找并行端口的内存地址

linux - 从 shell 创建和删除 AWS EC2 实例

python - 使用python获取密码

bash - 使用 sed 处理一段完整的文本

linux - 如何正确同时执行多个f90代码?

linux - 在 awk 命令中使用 pstree

arrays - Bash 映射两个数组

linux - 创建新线程时如何阻止程序执行? (与 GDB)

linux - 与 Linux 内核模块/驱动程序比较的 UMDF 理解