Linux增加文本形式中更多列的方法

2024-04-20 10:12:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想加一列

我生成了下表格式(.txt文件和制表符分隔)

    ID      ALPA
    1        A
    1        A
    1        B
    1        B
    1        C
    2        A
    2        A
    2        B
    2        B
    2        C
    2        C

一个ID中有两个相同的ALPA 像身份证1里的两个A 但对于ID为1的C,只包含一个 然后我想评论同一行如下

    ID      ALPA     Remark
    1        A
    1        A
    1        B
    1        B
    1        C       Error : There is only one ALPA exist
    2        A
    2        A
    2        B
    2        B
    2        C
    2        C

有人知道哪种方法更好吗?你知道吗

谢谢大家!你知道吗


Tags: 文件txtidonlyis格式评论error
1条回答
网友
1楼 · 发布于 2024-04-20 10:12:02

这是awk行,不需要对输入文件进行排序:

awk -F'\t' -v OFS="\t" 'NR==1{print $0,"Remark"}
{k=$1FS$2;x[NR]=k;c[k]++}
END{for(i=2;i<=NR;i++)printf "%s%s\n", x[i],(c[x[i]]!=2? FS "ERROR":"")}' file

根据您的数据,输出:

ID      ALPA    Remark
1       A
1       A
1       B
1       B
1       C       ERROR
2       A
2       A
2       B
2       B
2       C
2       C

你可以写有意义的错误信息,我只是把它改成“错误”

更新

添加相对可读的版本:

awk -F'\t' -v OFS="\t" 'NR==1{print $0,"Remark"}
        {key=$1FS$2; lines[NR]=key; count[key]++}
        END{for(i=2;i<=NR;i++)
                        if(count[lines[i]]!=2)
                                print lines[i], "ERROR"
                        else
                                print lines[i]}' file

相关问题 更多 >