0

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

  1. 仅获取 id 列表中大于给定数字的 id;在这种情况下,我们说“231219”。我怎样才能将其纳入?

  2. 我有一个本地文件“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
4

2 回答 2

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 -
于 2013-01-25T23:58:57.477 回答
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 读取。

于 2013-01-26T00:56:13.957 回答