私はawkとsedで遊んでいます。次の形式のファイルがあります
0000098236|Q1.1|one|Q2.1|one|Q3.1|one
0000027965|Q1.5|five|Q1.1|one|Q2.1|one
0000083783|Q1.1|one|Q1.5|five|Q2.1|one
0000027965|Q1.1|one|Q1.1|one|Q1.5|five
0000083983|Q1.1|one|Q1.5|five|Q2.1|one
0000083993|Q1.3|three|Q1.4|four|Q1.2|two
QX.Xを特定の数値に変換したい。私はsedでそれを達成しました:
sed -e "s/\<Q1.1\>/88/g" |
sed -e "s/Q1.2/89/g" |
sed -e "s/Q1.3/90/g" |
sed -e "s/Q1.4/91/g" |
sed -e "s/Q1.5/92/g" |
などなど。これまでのところとても良いです。私がこれをした後、私は得る
0000098236|88|one|88|one|88|one
0000027965|92|five|88|one|88|one
0000083783|88|one|92|five|88|one
0000027965|88|one|88|one|92|five
0000083983|88|one|92|five|88|one
0000083993|90|three|91|four|89|two
区切り文字はパイプです。次に、重複ペアを削除する必要があります
- 常に最初の値を保持したい
- 残りをペアでグループ化したいので、上記の最初の行で
88|one
は 1 つのペアです - 重複ペアを一行で取り出したファイルを作りたい
上記のファイルは、変換を実行すると次のようになります。
0000098236|88|one
0000027965|95|five|88|one
0000083783|88|one|92|five
0000027965|88|one|88|one
0000083983|88|one|92|five
0000083993|90|three|91|four|89|two
awk と配列を使用しようとしましたが、機能しません。