0

特定の列から個別の値を識別するコマンドについて誰か助けてもらえますか?

たとえば、私の入力は次のようなものです

Column1 Column2 Column3
a   11  abc
a   22  abc
b   33  edf
c   44  ghi

次のような出力が必要です

Column1
a
b
c

私の入力ファイルにはヘッダーがあります。したがって、Column1 をパラメーターとして渡すコマンドが必要です。

4

2 に答える 2

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

注: 列名が存在しない場合は、最初の列の値が生成されます。

于 2014-06-27T08:40:32.460 に答える
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
于 2013-04-08T13:22:19.393 に答える