【发布时间】:2015-10-18 03:52:38
【问题描述】:
可以被认为是 this bash question 的变体,我在这里问这个问题之前查了一下。
以下是一个示例文件:
C=b933cda8ce0/0 p=880080
C=b933cdd6580/0 p=880080
C=b933d02a240/0 p=880080
C=b933d059610/0 p=880080
C=b933d1c8690/0 p=880080
C=b933d2c1b60/0 p=1560315
C=b933d2c1b60/0 p=880080
C=b933d32f240/0 p=1229793
C=b933d32f240/0 p=123412
这里的输出应该是:
C=b933d2c1b60/0 p1=1560315 p2=880080
C=b933d32f240/0 p1=1229793 p2=123412
我需要从 field#1 匹配的所有行中打印出 field#2 与 field#1 的所有值。
虽然我使用下面的长单线完成了工作,但它对我来说似乎并不优雅/高效:
d=0; q=0; cat file |while read -r c p; do if [[ $c = $d ]]; then printf "$c\t$p\t$q\n"; fi; d=$c; q=$p; done
代码可以在任何标记的语言/工具中。
【问题讨论】:
-
具有匹配字段一值的行是否总是这样相邻?
-
@EtanReisner 如果不是,我可以随时对它们进行排序。所以,是的。