在CSV中查找只出现一次的值
我有一个csv文件,里面有数千行。我希望能够找到在此文件中只出现一次的值 比如说在CSV中查找只出现一次的值,csv,awk,Csv,Awk,我有一个csv文件,里面有数千行。我希望能够找到在此文件中只出现一次的值 比如说 dog dog cat dog bird 作为我的结果,我想得到: cat bird 我尝试使用以下awk命令,但它返回了文件中的每个值之一: awk -F"," '{print $1}' test.csv|sort|uniq 返回: dog cat bird 谢谢你的帮助 关闭。尝试: awk-F“,“{print$1}”test.csv | sort | uniq-c | awk'{if($1==1)p
dog
dog
cat
dog
bird
作为我的结果,我想得到:
cat
bird
我尝试使用以下awk
命令,但它返回了文件中的每个值之一:
awk -F"," '{print $1}' test.csv|sort|uniq
返回:
dog
cat
bird
谢谢你的帮助 关闭。尝试:
awk-F“,“{print$1}”test.csv | sort | uniq-c | awk'{if($1==1)print$2}”
uniq上的-c
标志将为您提供计数。下一个awk将查找计数为1的任何项目(第一个字段),并打印第二个字段的值($2)
唯一要注意的是,这将返回鸟之前的猫,因为它之前被重新启动。您可以再次通过管道连接到sort-r
,以反转排序方向。这与您要求的预期答案相同,但它不是原始排序顺序 关闭。尝试:
awk-F“,“{print$1}”test.csv | sort | uniq-c | awk'{if($1==1)print$2}”
uniq上的-c
标志将为您提供计数。下一个awk将查找计数为1的任何项目(第一个字段),并打印第二个字段的值($2)
唯一要注意的是,这将返回鸟之前的猫,因为它之前被重新启动。您可以再次通过管道连接到sort-r
,以反转排序方向。这与您要求的预期答案相同,但它不是原始排序顺序 仅使用awk:
awk -F, '{count[$1]++} END {for (key in count) if (count[key] == 1) print key}' test.csv
就凭awk:
awk -F, '{count[$1]++} END {for (key in count) if (count[key] == 1) print key}' test.csv
剪切到第一个字段,然后排序并仅显示唯一字段:
cut -d ',' -f 1 test.csv | sort | uniq -u
也就是说,如果将
-u
附加到命令中,它就可以工作了。这只是使用cut
而不是awk。剪切到第一个字段,然后排序并仅显示唯一字段:
cut -d ',' -f 1 test.csv | sort | uniq -u
也就是说,如果将
-u
附加到命令中,它就可以工作了。这只是使用cut
而不是awk。如果Perl是一个选项,那么此代码类似于@glenn jackman的代码:
perl-F,-lane'$c{$F[0]}++;结束{for$k(排序键%c){print$k if$c{$k}==1}}'test.csv
使用以下命令行选项:
围绕输入文件的每一行循环-n
在处理之前删除换行符,然后将其添加回-l
自动拆分模式–将输入行拆分为-a
数组。默认为按空格拆分李>@F
执行perl代码-e
自动拆分修改器,在本例中,在-F
上拆分,
@F
是每行中的单词数组,索引从$F[0]
如果Perl是一个选项,此代码类似于@glenn jackman的:
perl-F,-lane'$c{$F[0]}++;结束{for$k(排序键%c){print$k if$c{$k}==1}}'test.csv
使用以下命令行选项:
围绕输入文件的每一行循环-n
在处理之前删除换行符,然后将其添加回-l
自动拆分模式–将输入行拆分为-a
数组。默认为按空格拆分李>@F
执行perl代码-e
自动拆分修改器,在本例中,在-F
上拆分,
@F
是每行中的单词数组,索引从$F[0]
开始,唯一需要注意的是:如果第一个逗号分隔的字段包含空格怎么办?那么,管道中的最后一个awk将不会为您提供正确的输出。我会使用sed-rn的//^[]+1[]+//p'yesgood call@glennjackman!我正在处理他的示例输入。。。。awk'$1==1{print$2}
更为惯用。唯一需要注意的是:如果第一个逗号分隔的字段包含空格怎么办?那么,管道中的最后一个awk将不会为您提供正确的输出。我会使用sed-rn的//^[]+1[]+//p'yesgood call@glennjackman!我正在处理他的示例输入。。。。awk'$1==1{print$2}
更为惯用。