awk - 用冒号分隔时使用 awk 来划分列
问题描述
我有一个包含多个列的文件,如下所示:
12080:1016 108:9 84:23 2708:270 146:18 610:127 24:6 94:6 478:59 2816:279 108:29 16332:1534
基本上,对于每一列,我想将第二个数字除以第一个数字(即 1016/12080 等)。
我想打印每列的分割值,我知道我可以通过用':'单独分割所有行然后分割来做到这一点,但这似乎需要做很多额外的工作。必须有一种更简单的方法来做到这一点,但我被困住了。
任何建议都会很棒。谢谢
解决方案
尝试:
awk '{for(i=1;i<=NF;i++) { v = $i;split($i,d,":"); printf d[2]/d[1] " "; }} ' input.txt > out.txt
输入.txt
12080:1016 108:9 84:23 2708:270 146:18 610:127 24:6 94:6 478:59 2816:279 108:29 16332:1534
出.txt
0.084106 0.0833333 0.27381 0.0997046 0.123288 0.208197 0.25 0.0638298 0.123431 0.0990767 0.268519 0.093926
推荐阅读
- javascript - 从不同页面重定向到特定部分
- c# - asp.net 核心 + ef6 + mysql
- rust - 使用 clang 与 C 链接时缺少 Rust 目标文件
- spring-boot - 用mybatis实现面向集合的存储库(DDD)
- c# - 如何判断是.net核心程序集还是带代码的框架程序集
- python - Pandas - 将 12H 转换为 24H(但去掉 1900-01-01)
- entity-framework - 带有当前用户 ID 的 EF Where 子句
- python - 有没有办法对齐具有相同索引位置的多个列表?
- azure-functions - 如何从 Azure Function 中的 cosmos DB 文档触发器中获取 JSON 对象
- java - 如何用 Eclipse 运行 testng 工厂?