ファイルから重複する単語を削除する

ファイルから重複する単語を削除する

次のような形式のテキストファイルがあります。

path1/path2/path3a 34474538656
path1/path2/path3a 8115147679
path1/path2/path3b 2266371027
path1/path2/path3b 3860823 
path1/path2/path3b 554247

そしてパターンは続きます。列1の重複項目のみを削除し、次のように印刷したいと思います。

path1/path2/path3a 34474538656
                   8115147679
path1/path2/path3b 2266371027
                   3860823 
                   554247

可能ですか?

列は単一のスペースで区切られます。

すべてのパスの長さは同じです。

読みやすいようにグローバルにソートすることをお勧めします。

ベストアンサー1

1つの方法は次のとおりです。

$ awk '{ print seen[$1]++ ? "                   "$2 : $0}' file
path1/path2/path3a 34474538656
                   8115147679
path1/path2/path3b 2266371027
                   3860823
                   554247

次のように書くこともできます。

$ awk -v spacer='                   ' '{ print seen[$1]++ ? spacer$2 : $0}' file
path1/path2/path3a 34474538656
                   8115147679
path1/path2/path3b 2266371027
                   3860823
                   554247

または

$ awk -v spacer='                   ' '{ if(seen[$1]++){print spacer$2}else{print}}' file
path1/path2/path3a 34474538656
                   8115147679
path1/path2/path3b 2266371027
                   3860823
                   554247

またはperlシムの長さを動的に計算します。

$ perl -lane '$spacer=$seen{$F[0]}++ ? " " x length($F[0]) : $F[0]; print "$spacer $F[1]"' file
path1/path2/path3a 34474538656
                   8115147679
path1/path2/path3b 2266371027
                   3860823
                   554247

おすすめ記事