python - Linux增加更多文本格式列的方法

标签 python linux perl awk sed

我想添加一列

我生成了以下表格格式(.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 就像 ID 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

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

谢谢大家!

最佳答案

这是 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

关于python - Linux增加更多文本格式列的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25265007/

相关文章:

python - Django - 如何在不对源对象应用克隆更改的情况下克隆对象

php - 如何在 Linux (centos) 上安装带有 PHP 绑定(bind)的 wkhtmltopdf

c - 即使使用 pkg-config 也找不到 'gtk/gtk.h' 文件

Perl TCP 服务器和每次写入后刷新

python - 使用BeautifulSoup时,html在某些搜索结果中需要不同索引号的数据

python - 嵌入 ipython qtconsole 和传递对象

linux - 将供应商 MAC 地址的 "-"替换为 ":"

perl - LWP::UserAgent 忽略 SSL_VERIFY_PEER

perl - APT 错误 : Depends: perl (= 5. 14.2-6ubuntu2) 但要安装 5.14.2-6ubuntu2.1

python - 我添加了一个 ssl cer 并将 http 重定向到 https 但现在所有 url 都是 404