bash - 删除第一列中的重复记录,但不修改其余列
问题描述
我想删除第 1 列中的重复记录,保留第一个实例。但保持其余列不变。
输入
444444 21-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
444444 116,118,124-125,120,122-123,126,132.
444444 25-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
444444 110,118,124-125,120,122-123,126,132.
111111 21-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
111111 116,118,124-125,120,122.
111111 21-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
232323 20-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
232323 116,118,124-125,120,122-123,126,132.
输出
444444 21-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
116,118,124-125,120,122-123,126,132.
25-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
110,118,124-125,120,122-123,126,132.
111111 21-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
116,118,124-125,120,122.
21-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
232323 20-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
116,118,124-125,120,122-123,126,132.
我试过
awk '!NF {print;next}; !($1 in a) {a[$1];print}' file
另外,尝试将文件分成两部分:
file 1: first column and remove the duplicates and keep first > output1
file 2: Second Column
paste output1 file2 > file-output.
是否可以选择在简单的 awk 行中执行。
解决方案
这awk
可能对您有用:
awk 'seen[$1]++{$1="\t\t"} 1' file
444444 21-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
116,118,124-125,120,122-123,126,132.
111111 21-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
116,118,124-125,120,122.
232323 21-84,87,85-86,88-106,108,111,109,112,110,113,115,114,117,
116,118,124-125,120,122-123,126,132.
推荐阅读
- java - 无法使用 @PersistenceContext 注入 entityManager
- java - Java 反射调用具有通用参数的方法
- java - 找出与给定行号匹配的信息的最佳方法是什么
- android-studio - 从不同线程调用相机
- javascript - 如何修复 Angular 8 Bearer 令牌请求未经授权
- sql - 如何在 SQL 中通过 binning 计数
- python - 如何让一只乌龟向另一只乌龟的位置移动?
- spring - org.springframework.beans.factory.BeanCreationException:创建 ServletContext 中定义的名称为“sessionFactory”的 bean 时出错
- python - Python Regex - 用 Dash 替换非字母数字字符和空格
- python - Python 中的语句非常长?