小编Abd*_*lah的帖子

awk 获取下一行

我正在尝试使用 awk 来格式化包含多行的文件。
文件内容:

ABC;0;1
ABC;0;0;10
ABC;0;2
EFG;0;1;15
HIJ;2;8;00
KLM;4;18;12
KLM;6;18;1200
KLM;10;18;14
KLM;1;18;15
Run Code Online (Sandbox Code Playgroud)

想要的结果:

ABC;0;1;10;2
EFG;0;1;15
HIJ;2;8;00
KLM;4;18;12;1200;14;15
Run Code Online (Sandbox Code Playgroud)

我正在使用下面的代码:

awk -F ";" '{
        ligne= ligne $0
        ma_var = $1
        {getline
        if($1 != ma_var){
            ligne= ligne "\n" $0
        }
        else {
        ligne= ligne";"NF
        }
        }   
}
END {
    print ligne
} ' ${FILE_IN} > ${FILE_OUT}
Run Code Online (Sandbox Code Playgroud)

目标是将下一行的第一列与当前行的第一列进行比较,如果匹配则将下一行的最后一列添加到当前行,并删除下一行,否则打印下一行。

亲切的问候,

bash awk

1
推荐指数
1
解决办法
8973
查看次数

标签 统计

awk ×1

bash ×1