私は次のような10,000を超える行のサンプルデータを使って作業しています。
hxxp://google.com
hxxp://google.com "Seen"
hxxp://yahoo.com "Check again"
hxxp://yahoo.com
hxxp://about.com
hxxp://x.com
hxxp://y.com
hxxp://z.com
hxxp://reddit.com
hxxp://a.com "good"
hxxp://a.com
hxxp://b.com "good"
hxxp://c.com
hxxp://c.com "good"
hxxp://c.com
私はこれらの結果を達成する方法を見つけるために苦労してきました。
hxxp://google.com "Seen"
hxxp://yahoo.com "Check again"
hxxp://about.com
hxxp://x.com
hxxp://y.com
hxxp://z.com
hxxp://reddit.com
hxxp://a.com "good"
hxxp://b.com "good"
hxxp://c.com "good"
サンプルデータには重複した行がある可能性があります。重複した行がある場合は、2番目の列が欠落している行を削除します。区切り記号は空白です。
awk -F' ' '!seen[$1]++' dupe.txt > clean.txt
これは私にぴったりの裏地ではないようだ。
ベストアンサー1
$ LC_ALL=C sort -r <file | LC_ALL=C sort -k1,1 -us
hxxp://a.com "good"
hxxp://about.com
hxxp://b.com "good"
hxxp://c.com "good"
hxxp://google.com "Seen"
hxxp://reddit.com
hxxp://x.com
hxxp://y.com
hxxp://yahoo.com "Check again"
hxxp://z.com
最初は、sort
行全体をソートキーとして使用し、ファイルを逆順にソートします。これにより中間結果が生成されます。
hxxp://z.com
hxxp://yahoo.com "Check again"
hxxp://yahoo.com
hxxp://y.com
hxxp://x.com
hxxp://reddit.com
hxxp://google.com "Seen"
hxxp://google.com
hxxp://c.com "good"
hxxp://c.com
hxxp://c.com
hxxp://b.com "good"
hxxp://about.com
hxxp://a.com "good"
hxxp://a.com
与えられたサンプルデータ。追加のコメントを含む行は、常に追加のコメントがない行の前にあることに注意してください。
2番目は、sort
一意のソートキーを持つ行のみを生成します。最初のフィールド(URL)のみをソートキーとして使用します。また、sort
「安定した」ソートアルゴリズムを使用する必要があります-s
。これは、同じキーを持つ行の順序が入力順序を変更しないことを意味します。
-u
組み合わせは、-s
重複したURLを含む追加のコメント行のみを提供します。
このビットは、適切なロケールを取得し、行が正しく機能するように正しく配置されるようにするLC_ALL=C
ためのものです。sort