awk - 将 2 行与 awk 进行比较
问题描述
如果它们的第一个字段相同,我想从一行中的行中打印所有第二个字段。第一个相同文件的数量未定义
例子
1 abc
1 def
1 ghi
2 abc
3 abc
3 def
期望的输出
1 abc def ghi
2 abc
3 abc def
解决方案
假设您的输入已排序:
$ awk 'p!=$1{if(NR>1) print r;p=r=$1}
{r=(r OFS $2)} END{print r}' file
1 abc def ghi
2 abc
3 abc def
- 对于每一行;
- 如果它的第一列等于
p
(即上一行的第一列);- 如果行号 (
NR
) 大于 1;打印r
。 - 填充
p
并r
使用第一列的值。
- 如果行号 (
- 将空格 (
OFS
) 和第二列的值添加到r
.
- 如果它的第一列等于
- 在文件末尾,打印
r
.
推荐阅读
- arrays - Julia 数组的列联表
- javascript - 如何在javascript下为我的成本添加税率?
- javascript - 使用html和javascript制作登录页面后,想防止别人直接进入链接页面
- jupyter-notebook - 不能在 Julia 中使用包
- python - 将python字体更改为tex保持刻度标签普通字体
- android - 如何在 Firestore 监听器中完成我的功能?
- javascript - 仅在 iPhone 上返回结果中的croppie.js 空白图像
- python - 水平连接两个图像 - 结果为一个黑色图像
- excel - 在 Excel 表中计算现金余额的宏
- reactjs - 由 useMediaQuery 引起的延迟文本字段?