awk能力削减能力

时间:2013-01-25 23:55:06

标签: awk grep cut

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

  1. 在ID列表中只获取大于给定数字的ID;让我们说" 231219"在这种情况下。我该如何加入?

  2. 我有一个本地文件" ids_ignore.txt&#34 ;;我们放在此列表中的anyid应该被命令忽略..

  3. 可以执行以上操作吗?

    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
    

2 个答案:

答案 0 :(得分:1)

... | awk '$1 > max' max=8888 | grep -v -F -f ids_ignore.txt

或者,如果你想用awk做这一切:

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

答案 1 :(得分:0)

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_ignore文件后从stdin读取。