我一直在玩 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
是一对 - 我想创建一个文件,从一行中取出重复的对
所以上面的文件在运行转换后应该如下所示
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 和数组,但无法使其正常工作。