私はこれがインターネット検索で簡単に行うことができますが、成功しないことを知っています。すみません。
最初の列で定義された値グループの最初の行を印刷したいと思います。区切り文字はタブ文字です。
入力する:
A 5
A 3
B 2
B 1
B 77
C 4
C 10000
D 99
出力:
A 5
B 2
C 4
D 99
答え1
最短:
awk -F'\t' '!a[$1]++' file
出力:
A 5
B 2
C 4
D 99
!a[$1]++
- 最初の列の最初の一意の値が見つかった場合は、行印刷が発生していることを確認します。
答え2
次の操作が実行されます。
awk -F\t 'BEGIN {A=""} {if ($1!=A) { print $0; A=$1}}' input_file
変数Aの初期化時に最初の列の既存のリストにない初期値を選択
答え3
以下は、awkではなく2つのオプションです。
sort u foo -k 1,1
sort
-u
()機能にのみ使用されます--unique
。-k 1,1
比較には最初の文字()のみが使用されます。
rev foo | uniq -f 1 | rev
使用uniq
。この-f
オプションは比較する開始フィールドのみを指定できるようにするため、最初に入力をrev
反転()しuniq
てから、rev
その出力を再出力するためのいくつかのトリックを使用します。