我有一个文件(名为example.txt),如下所示:
A B C
D E F
H I C
Z B Y
A B C
T E F
W O F 仅基于第2列,我希望标识所有具有非唯一条目的行,并完全删除它们。我的真实文件可能有重复条目、三重条目、四重条目等等。我只想保留第2列的条目是唯一的行。
输出文件应该如下所示:
H I C
W O F我最初想在R中这样做,但是我的文件太大了,以至于R太慢了,而且正在崩溃。所以我想直接用bash来做这个。我刚开始打篮球,我试过了,但它不起作用:
arrayTmp=($(cat example.txt | awk '{print $2}' | sort | uniq -d))
sed "/${arrayTmp[@]}\/d" example.txt发布于 2017-04-06 16:38:01
如果命令不重要:
awk '{a[$2]=$0;b[$2]++}END{for (i in b){if(b[i]==1){print a[i]}}}' your_file发布于 2017-04-06 17:36:06
假设这些字符仅存在于第二列中,这可以通过在example.txt中选择不匹配的行来实现,并且不需要数组。
tmp=$(cat example.txt | awk '{print $2}' | sort | uniq -d)
grep -v -f <(echo -e "$tmp") example.txt产出:
H I C
W O Fhttps://stackoverflow.com/questions/43260527
复制相似问题