如何在多行nawk输出上搜索不等于的值

时间:2013-10-23 14:58:05

标签: nawk

我目前有CVS状态管理的解决方案: -

cvs -q status|awk 'c-->0;$0~s{if(b)for(c=b+1;c>1;c--)print r[(NR-c+1)%b];print;c=a}b{r[NR%b]=$0}' b=1 a=9 s='(Locally Modified)|(Needs Patch)'

这为我提供了一个需要修补的本地修改文件和文件的显示,这很棒。 然而,对于我来说,能够捕获所有状态的更好的解决方案是当状态不等于“最新”时。 我试过s!=和s<>但它似乎只允许=。

1 个答案:

答案 0 :(得分:0)

一个小小的空白会走很长的路......

$0 ~ s的反面是$0 !~ s,所以

cvs -q status | awk '
    c-- > 0
    $0 !~ s {
        if (b)
            for (c=b+1; c>1; c--)
                print r[(NR-c+1)%b]
        print
        c=a
    }
    b {r[NR%b]=$0}
' b=1 a=9 s='Up-to-date'