2013-04-08 5 views
0

Может ли кто-нибудь помочь мне в команде для идентификации отдельных значений из определенного столбца?команда для определения различного значения поля

Для, например, мой вход, как

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

мне требуется выход, как

Column1 
a 
b 
c 

мой входной файл имеет заголовок. Поэтому мне нужна команда, в которой мы передаем параметр Column1 в качестве параметра.

ответ

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 
+0

спасибо! Нужно еще одно уточнение. Здесь мы знаем, что column1 - это первое поле, если мы не знаем, в какой позиции находится столбец1, тогда какая команда будет? – user2257712

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

Примечание: несуществующие имена столбцов дают значения из первого столбца.

Смежные вопросы