gpt4 book ai didi

linux - 如何在 Linux shell 中删除文件中的 n 次重复行?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:36 25 4
gpt4 key购买 nike

我说几句:

one
two
two
three

我有一个文件,其中每个单词都重复了 n 次。例如,在 n=2 时,给定的文件是:

one
two
two
three
two
three
two
one

问题是如何恢复原来的词组(我知道$n数)。

请注意,“two”这个词应该出现两次,所以 sort -u file.txtsort file.txt | uniq 不是这里的答案!

最佳答案

此行为您提供未排序原始行:

awk -v n="2" '{a[$0]++}END{for(x in a)for(i=1;i<=a[x]/n;i++)print x}' file

n 可以是可变的,我使用了硬编码的2。使用您当前的输入文件,它输出:

two
two
three
one

输出未排序,因为只有输入文件无法知道“原始”文件的顺序。

用其他例子测试:

#still n=2
kent$ cat f
one
one
one
one
three
three
two
two
two
two
two
two

kent$ awk -v n="2" '{a[$0]++}END{for(x in a)for(i=1;i<=a[x]/n;i++)print x}' f
three
two
two
two
one
one

#now n=4:

kent$ cat f
one
one
one
one
one
one
one
one
three
three
three
three
two
two
two
two
two
two
two
two
two
two
two
two

kent$ awk -v n="4" '{a[$0]++}END{for(x in a)for(i=1;i<=a[x]/n;i++)print x}' f
three
two
two
two
one
one

关于linux - 如何在 Linux shell 中删除文件中的 n 次重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25895841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com