选择文件中的一组行,其中一个字段的值相同

时间:2017-01-16 16:03:02

标签: file pseudocode

我不确定如何说出这个问题,所以我会尽力解释一下:

假设我有一个文件:

  

100001,ABC,400

     

100001,EFG,500

     

100001,ABC,500

     

100002,DEF,400

     

100002,EFG,300

     

100002,XYZ,1000

     

100002,ABC,700

     

100003,DEF,400

     

100003,EFG,300

我想抓住每一行并将它们组合在一起,每行中的第一个值相同。所以所有100001都在一起,所有100002都在一起等等。

我只需要帮助搞清楚逻辑。不需要语言的特定实现。

伪代码很好。

1 个答案:

答案 0 :(得分:0)

我假设COL1按顺序排列。 我假设"一起去#34;意味着它们被连接成一行。

伪代码的逻辑:

while not EOF
    read line
    if not same group
        if not first line
            print accumulated values
        start new group
    append values
print the last group

在awk中,您可以使用以下代码对其进行测试:

awk '
BEGIN { FS = ","; x=""; last="";}
{
    if ($1 != last) {
        if (x != "")
            print x;
        x=$1;
        last=$1;
    }
    x=x";"$2";"$3;
}
END {print x;} '