【问题标题】:how to remove uncommon lines at beginning or end of the files?如何删除文件开头或结尾的不常见行?
【发布时间】:2019-07-23 03:59:54
【问题描述】:

我有两个不同的文件,第一列是常见的,唯一的区别可能是在任何文件的开头或结尾缺少或多余的行。

文件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 中所示。

【问题讨论】:

  • 通过查看您的个人资料,知道您从未在 SO 上选择过正确答案,给它一些时间,当您发现您的问题的答案很少时,尝试选择其中任何一个作为正确答案,看到这个stackoverflow.com/help/someone-answers 一次。

标签: bash unix awk


【解决方案1】:

如果您可以对文件进行排序,请使用 join 命令。 请记住,在 awk 中使用数组效率不高,而且对于大文件,它可能会非常慢。

【讨论】:

  • 不,我不能对第一列中具有特定序列的文件进行排序,并且在两个文件中都相同。我唯一需要在问题中描述的任何文件的开头或末尾删除一些不常见的行。
猜你喜欢
  • 1970-01-01
  • 2012-06-13
  • 2017-09-03
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
  • 2020-10-31
  • 1970-01-01
  • 2022-12-02
相关资源
最近更新 更多