awk能力削减能力

awk能力削减能力,awk,grep,cut,Awk,Grep,Cut,我使用下面的ssh命令来获取id列表。现在我想 仅获取大于ID列表中给定数字的ID;在这种情况下,让我们说“231219”。我怎样才能把它结合起来 我有一个本地文件“ids_ignore.txt”;命令应忽略我们放入此列表中的任何ID awk或cut能做上述工作吗 ssh -p 29418 company.com gerrit query --commit-message --files --current-patch-set \ status:open project:platform

我使用下面的ssh命令来获取id列表。现在我想

  • 仅获取大于ID列表中给定数字的ID;在这种情况下,让我们说“231219”。我怎样才能把它结合起来

  • 我有一个本地文件“ids_ignore.txt”;命令应忽略我们放入此列表中的任何ID

  • awk或cut能做上述工作吗

    ssh -p 29418 company.com gerrit query --commit-message --files --current-patch-set \
        status:open project:platform/code branch:master |
    grep refs | cut -f4 -d'/'
    
    输出:-

    231222
    231221
    231220
    231219
    230084
    229092
    228673
    228635
    227877
    227759
    226138
    226118
    225817
    225815
    225246
    223554
    223527
    223452
    223447
    226137
    
    或者,如果您想用awk完成所有工作:

     ... | awk 'NR==FNR{ no[$1]++ } 
            NR!=FNR && $1 > max && ! no[$1]' max=NNN ids_ignore.txt -
    

    cut
    无法对输入字段进行数字比较,它只是一个简单的字段提取工具
    awk
    可以完成grep和cut的工作:

    ssh -p 29418 company.com gerrit ... |
    awk -F/ -v min=231219 '
        NR == FNR {ignore[$1]; next} 
        /refs/ && $4>min && !($4 in ignore) {print $4}
    ' ids_ignore.txt -
    

    尾随-在awk命令末尾很重要:它告诉awk在读取ids\u ignore文件后从stdin读取。

    您的问题不清楚,添加来自
    ssh
    命令的输出。@sudo\u O-ssh命令的输出已经给出了如果这是来自ssh命令的输出,那么为什么要搜索
    refs
    并进行剪切,因为这是一个数字列表?我相信您发布的是您的预期输出。我仍然看到ssh命令打印的ID,即使是ids_ignore.txtI treid中的ID,也可以通过上述两种方式打印。我仍然看到ids_ignore.txt中显示的数字是打印出来的
    ssh -p 29418 company.com gerrit ... |
    awk -F/ -v min=231219 '
        NR == FNR {ignore[$1]; next} 
        /refs/ && $4>min && !($4 in ignore) {print $4}
    ' ids_ignore.txt -