问题描述
输入:
line1 a gh
line2 a dd
line3 c dd
line4 a gg
line5 b ef
所需的输出:
line3 c dd
line5 b ef
这就是我想要的输出线只有在没有其他行包含列2 的值相同的情况下。我以为我可以用sort(例如排序-k2,2输入)和uniq的结合做到这一点,但现在看来,与uniq的我只能从左边跳到列(-F避免比较第一N场)。肯定有使用awk或有事做一些这方面的简单方法。
That is, I want to output line only in the case that no other line includes the same value in column 2. I thought I could do this with combination of sort (e.g. sort -k2,2 input) and uniq, but it appears that with uniq I can only skip columns from the left (-f avoid comparing the first N fields). Surely there's some straightforward way to do this with awk or something.
推荐答案
您可以结合AWK中,grep,sort和uniq一个快速的单行:
You can combine awk, grep, sort and uniq for a quick one-liner:
的grep -v^ [^] * $(AWK'{$打印2}input.txt的|排序| uniq的-d)input.txt的
编辑,避免了正则表达式,\\ +和\\反向引用:搜索结果的grep -v^ [^] * $(AWK'{$打印2}input.txt中|排序| uniq的-d | sed的'S / [^ + 0-9] / \\\\&安培/克')input.txt的
Edit, to avoid the regexes, \+ and \backreferences:grep -v "^[^ ]* $(awk '{print $2}' input.txt | sort | uniq -d | sed 's/[^+0-9]/\\&/g') " input.txt
这篇关于只有输出线如果特定的列值是唯一的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!