列値に基づいてファイルの行をグループ化する

列値に基づいてファイルの行をグループ化する

以下に「csv」スプレッドシートがあります。

abc,12345,qwerty,A
xyz,12380,qwetty,R
abc,12389,qwerty,A
xyz,12324,qwetty,R

列1、2、および4で同じ値を持つ行をマージしたいと思います。また、3列の最後の2文字を「**」に変更したいと思います。出力例は次のとおりです。

abc,123**,qwerty,A
abc,123**,qwerty,A
xyz,123**,qwetty,R
xyz,123**,qwetty,R

総ライン数が100万ラインを超えています!

ベストアンサー1

まず、col1、col2、col4の順にファイルを並べ替えるには、次の手順を実行します。

$ sort -t, -k1,1 -k2,2 -k4,4 file
abc,12345,qwerty,A                                                                                        
abc,12389,qwerty,A
xyz,12324,qwetty,R
xyz,12380,qwetty,R

次に、2番目のフィールドを難読化するには、次のようにします。

$ sort -t, -k1,1 -k2,2 -k4,4 file | sed 's/..,/**,/2'
abc,123**,qwerty,A                                                                                        
abc,123**,qwerty,A
xyz,123**,qwetty,R
xyz,123**,qwetty,R

おすすめ記事