【发布时间】:2016-11-03 13:55:36
【问题描述】:
+----+-------+-----+
| ID | STORE | QTY |
+----+-------+-----+
| | | |
| 9 | 101 | 18 |
| | | |
| 8 | 154 | 19 |
| | | |
| 7 | 111 | 13 |
| | | |
| 9 | 154 | 18 |
| | | |
| 8 | 101 | 19 |
| | | |
| 7 | 101 | 13 |
| | | |
| 9 | 111 | 18 |
| | | |
| 8 | 111 | 19 |
| | | |
| 7 | 154 | 14 |
+----+-------+-----+
假设我有 3 家商店,我想为每个 id 取 STORE,每个商店的数量都相同。
例如 id 9 在 3 家商店,每家商店有 18 个数量, 但是 id 7 在商店中,但只有两个商店的数量相等(在商店 111 和 101 - 在 154 - id 有 14 个数量);如何使用 grep 获得该结果?
你认为这是不可能的一对一表达吗?我考虑过正则表达式,但我不知道我以哪种方式获得数量并与另一行进行比较。在我的文件中,它看起来像:
【问题讨论】:
-
您似乎从 SQL 数据库中获得了输出。使用 SQL 查询所述数据库,而不是在输出上使用 coreutils。
-
|s 是您文本的一部分,还是只是为了提出问题而进行的精美装饰? -
@Sundeep 只是花哨的装饰以更好地阅读输出
-
为了清晰起见,最好添加没有装饰元素的实际输入和预期的输出......另外,看看
awk 'id[$1]=$0{if($3 != qty[$1]) delete id[$1]} {qty[$1]=$3} END{for (i in id) {print id[i]}}' file是否有效