python - 如何在没有熊猫的情况下删除重复项?
问题描述
这是数据
row1| sbkjd nsdnak ABC
row2| vknfe edcmmi ABC
row3| fjnfn msmsle XYZ
row4| sdkmm tuiepd XYZ
row5| adjck rulsdl LMN
我已经尝试过使用pandas
并从stackoverflow获得帮助。但是,我希望能够删除重复项,而无需使用该pandas
库或任何一般的库。因此,必须选择只有一个具有“ABC”的行,只有一个具有“XYZ”的行必须选择,并且最后一行是唯一的,所以应该选择它。我该怎么做呢?因此,我的最终输出应包含以下内容:
[第1行或第2行+第3行或第4行+第5行]
解决方案
这个 Bash 命令可以(假设您的数据位于名为 的文件中test
,并且第 4 列的值不会出现在其他列中)
cut -d ' ' -f 4 test | tr '\n' ' ' | sed 's/\([a-zA-Z][a-zA-Z]*[ ]\)\1/\1/g' | tr ' ' '\n' | while read str; do grep -m 1 $str test; done
cut -d ' ' -f 4 test
选择第四列中的数据
tr '\n' ' '
将列转换为行(将换行符转换为空格)
sed 's/\([a-zA-Z][a-zA-Z]*[ ]\)\1/\1/g'
删除重复
tr ' ' '\n'
项将唯一值行转换为列
while read str; do grep -m 1 $str test; done
读取唯一单词并打印test
与该单词匹配的第一行
推荐阅读
- javascript - 如何从 React 中的数据创建对象?
- reactjs - Mobx 使用类模型来定义 observables
- c# - 在 C# Windows 应用程序中使用 Azure AD 和获取应用角色
- javascript - 如何将对象分配给 html 元素?
- c# - 将驱动器信息转换为字符串数组时出错
- nebular - 如何使用分页实现 Nebular NbTreeGridComponent
- database - SQLITE:database.locked 错误 - 如何等到一个事务完成才能在单个线程中启动下一个事务
- ssl - JSR223 Sampler SSL 证书问题
- java - 无法在 CentOS6.10 64 位的 Tigase 服务器中进行集群
- c - rename() 函数与 int 的间接级别不同