特定の列から個別の値を識別するコマンドについて誰か助けてもらえますか?
たとえば、私の入力は次のようなものです
Column1 Column2 Column3
a 11 abc
a 22 abc
b 33 edf
c 44 ghi
次のような出力が必要です
Column1
a
b
c
私の入力ファイルにはヘッダーがあります。したがって、Column1 をパラメーターとして渡すコマンドが必要です。
特定の列から個別の値を識別するコマンドについて誰か助けてもらえますか?
たとえば、私の入力は次のようなものです
Column1 Column2 Column3
a 11 abc
a 22 abc
b 33 edf
c 44 ghi
次のような出力が必要です
Column1
a
b
c
私の入力ファイルにはヘッダーがあります。したがって、Column1 をパラメーターとして渡すコマンドが必要です。
ファイル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
注: 列名が存在しない場合は、最初の列の値が生成されます。
入力ファイルを指定して、次のコマンドを実行します。
$ 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