任何人都可以帮我找一个命令来识别特定列的不同值吗?
例如,我的输入就像
Column1 Column2 Column3
a 11 abc
a 22 abc
b 33 edf
c 44 ghi
我需要像
这样的输出Column1
a
b
c
我的输入文件有标题。所以我需要一个命令,我们将Column1作为参数传递。
答案 0 :(得分:0)
使用输入文件运行以下命令:
$ head -1 input.file | awk '{ print $1}'; awk '{ if (NR > 1) print $1 }' input.file | uniq
Column1
a
b
c
或者只是:
$ awk '{print $1 }' input.file | uniq
Column1
a
b
c
答案 1 :(得分:0)
档案distinct.pl
:
#!/usr/bin/perl
$_ = <STDIN>;
@F = split;
map $col{$F[$_]}=$_, (0..$#F); # map column names to numbers
while (<STDIN>)
{
@F = split;
$val{$F[$col{$ARGV[0]}]} = undef # implement the set of values
}
$, = "\n";
print $ARGV[0], ""; # output the column parameter
print sort(keys %val), "" # output sorted set of values
示例命令:distinct.pl Column2 <input
注意:不存在的列名会产生第一列的值。