Bash 打印第一列匹配的行,第二列不同

Bash 打印第一列匹配的行,第二列不同,bash,awk,sed,grep,Bash,Awk,Sed,Grep,在文本文件中,如何仅打印第一列重复但第二列不同的行?我想调和这些分歧。是否可能使用awk/sed/bash 输入: Jon AAA Jon BBB Ellen CCC Ellen CCC 输出: Jon AAA Jon BBB 注意实际文件未排序 谢谢你的帮助。这一行应该可以:(为了更好地阅读,我把一行分成三行) 如果第一次选中,则第1行将$1$2保存到数组中 第2行:对于现有的$1和不同的$2,将它们(两行)放入一个数组p,这样相同的$1,$2组合就不会被打印多次 打

在文本文件中,如何仅打印第一列重复但第二列不同的行?我想调和这些分歧。是否可能使用awk/sed/bash

输入:

Jon    AAA
Jon    BBB
Ellen  CCC
Ellen  CCC
输出:

Jon  AAA
Jon  BBB
注意实际文件未排序

谢谢你的帮助。

这一行应该可以:(为了更好地阅读,我把一行分成三行)

  • 如果第一次选中,则第1行将$1$2保存到数组中
  • 第2行:对于现有的$1和不同的$2,将它们(两行)放入一个数组
    p
    ,这样相同的$1,$2组合就不会被打印多次
  • 打印数组的索引
    p
    • 这一行应该可以:(为了更好地阅读,我把一行分成三行)

      • 如果第一次选中,则第1行将$1$2保存到数组中
      • 第2行:对于现有的$1和不同的$2,将它们(两行)放入一个数组
        p
        ,这样相同的$1,$2组合就不会被打印多次
      • 打印数组的索引
        p
        • 这一行应该可以:(为了更好地阅读,我把一行分成三行)

          • 如果第一次选中,则第1行将$1$2保存到数组中
          • 第2行:对于现有的$1和不同的$2,将它们(两行)放入一个数组
            p
            ,这样相同的$1,$2组合就不会被打印多次
          • 打印数组的索引
            p
            • 这一行应该可以:(为了更好地阅读,我把一行分成三行)

              • 如果第一次选中,则第1行将$1$2保存到数组中
              • 第2行:对于现有的$1和不同的$2,将它们(两行)放入一个数组
                p
                ,这样相同的$1,$2组合就不会被打印多次
              • 打印数组的索引
                p
              将只打印唯一的行

              将只打印唯一的行

              将只打印唯一的行


              将只打印唯一的行。

              只需正常的唯一排序即可

              awk '!a[$0]++' test
              

              只是一个普通的独特的排序应该工作

              awk '!a[$0]++' test
              

              只是一个普通的独特的排序应该工作

              awk '!a[$0]++' test
              

              只是一个普通的独特的排序应该工作

              awk '!a[$0]++' test
              

              这可能适合您:

              sort file | uniq -u | rev | uniq -Df1 | rev
              
              这将对文件进行排序,删除任何重复的行,反转该行,删除不具有相同键的唯一行(在第二个字段相同的位置保留重复行),并将该行反转到其原始位置


              这将删除重复的行和带有单例键的行。

              这可能适用于您:

              sort file | uniq -u | rev | uniq -Df1 | rev
              
              这将对文件进行排序,删除任何重复的行,反转该行,删除不具有相同键的唯一行(在第二个字段相同的位置保留重复行),并将该行反转到其原始位置


              这将删除重复的行和带有单例键的行。

              这可能适用于您:

              sort file | uniq -u | rev | uniq -Df1 | rev
              
              这将对文件进行排序,删除任何重复的行,反转该行,删除不具有相同键的唯一行(在第二个字段相同的位置保留重复行),并将该行反转到其原始位置


              这将删除重复的行和带有单例键的行。

              这可能适用于您:

              sort file | uniq -u | rev | uniq -Df1 | rev
              
              这将对文件进行排序,删除任何重复的行,反转该行,删除不具有相同键的唯一行(在第二个字段相同的位置保留重复行),并将该行反转到其原始位置



              这将删除重复的行和带有单例键的行。

              条目是否总是像示例中那样分组?否,混合和随机第一列中是否有两行以上具有相同值?如果是,会发生什么?@user1899415是否有两条以上的线路具有相同的col1和diff col2?还有另外一行怎么样?输出结果是什么?不要把重要信息放在评论中,把它放在你的问题中,确保你的样本输入代表了你真实输入的困难场景。在这种情况下,把它弄混了!条目是否总是像您的示例中那样分组?否,混合和随机第一列中是否有超过两行具有相同值?如果是,会发生什么?@user1899415是否有两条以上的线路具有相同的col1和diff col2?还有另外一行怎么样?输出结果是什么?不要把重要信息放在评论中,把它放在你的问题中,确保你的样本输入代表了你真实输入的困难场景。在这种情况下,把它弄混了!条目是否总是像您的示例中那样分组?否,混合和随机第一列中是否有超过两行具有相同值?如果是,会发生什么?@user1899415是否有两条以上的线路具有相同的col1和diff col2?还有另外一行怎么样?输出结果是什么?不要把重要信息放在评论中,把它放在你的问题中,确保你的样本输入代表了你真实输入的困难场景。在这种情况下,把它弄混了!条目是否总是像您的示例中那样分组?否,混合和随机第一列中是否有超过两行具有相同值?如果是,会发生什么?@user1899415是否有两条以上的线路具有相同的col1和diff col2?还有另外一行怎么样?输出结果是什么?不要把重要信息放在评论中,把它放在你的问题中,确保你的样本输入代表了你真实输入的困难场景。在这种情况下,把它弄混了!这将重新排列输出中的顺序。不确定这是否是个问题。不,这不符合@TomFenech的发生顺序。我们可以做到,但它需要更多的检查,还需要另一个数组来保存订单信息。@Kent这是一个很好的解决方案,尽管不清楚OP想要什么。例如,如果您在末尾引入一行,比如说
              Jon AAA
              ,它将