bash - 如何删除文件开头或结尾的不常见行?
问题描述
我有两个不同的文件,第一列是常见的,唯一的区别可能是在任何文件的开头或结尾缺少或多余的行。
文件 1
aaa 1
bbb 2
ccc 3
aaa 4
bbb 5
ddd 6
eee 7
fff 8
ggg 9
文件2
bbb 10
ccc 20
aaa 30
bbb 40
ddd 50
eee 60
fff 70
ggg 80
www 90
输出文件
bbb 2 10
ccc 3 20
aaa 4 30
bbb 5 40
ddd 6 50
eee 7 60
fff 8 70
ggg 9 80
我知道如何使用 awk 打印常用行
awk 'NR==FNR{c[$1]++;next};c[$1] > 0' file1 file2
但我需要打印两个文件的公共部分,如 outfile 所示。
解决方案
如果您可以对文件进行排序,请使用 join 命令。请记住,在 awk 中使用数组效率不高,而且对于大文件,它可能会非常慢。
推荐阅读
- bash - 在bash中打开文件时如何通过循环插入生成的值
- javascript - 如何在 Select 中保留已选中的值?
- powershell - 在 Pester 中执行函数时它会跳过 it 语句,但不应该
- c# - 在 XDocument 中搜索 XML 节点时避免 Try n Catch
- here-api - HERE 地图的 API (datalens) 的 SSL 证书已过期,是否有解决方法?
- java - 无法在 docker 容器内以非阻塞方式读取类路径资源文件
- c# - 将按下的图片框连接到某个字母
- javascript - 如何像另一个事件一样改变一个事件的行为?
- python - 如何在使用 pipenv 和 VS Code 时调试 Django?
- azure - privacySetting 参数值不是允许值的一部分 - Azure LogicApps 的 SQL 连接