代码之家  ›  专栏  ›  技术社区  ›  include

Bash,将结果awk{print$1}与某物进行比较,如果为true,则返回awk{print$2}

  •  -1
  • include  · 技术社区  · 2 年前

    我的文件如下所示:

        790 45.61.188.53
        494 45.61.188.95
    
    

    我需要将第一个(例如790)与其他内容进行比较,然后打印第二个。

    所以我的代码实际上是这样的:

    c=$(cat $IPS | sed '/^$/d' | sort -rn | uniq -c | sort -rn | awk '{print $1}' | head -5 >> $CFILE)
    i=$(cat $IPS | sed '/^$/d' | sort -rn | uniq -c | sort -rn | awk '{print $2}' |head -5)
    
    
    for count in `cat $CFILE`
    do
        if (( $count > 100 ));then
            echo "$i"
        fi
    done
    

    但返回输出为:

    45.61.188.53
    45.61.188.95
    20.230.214.19
    45.61.187.215
    78.142.63.3
    45.61.188.53
    45.61.188.95
    20.230.214.19
    45.61.187.215
    78.142.63.3
    45.61.188.53
    45.61.188.95
    20.230.214.19
    45.61.187.215
    78.142.63.3
    45.61.188.53
    45.61.188.95
    20.230.214.19
    45.61.187.215
    78.142.63.3
    
    and so on
    

    我假设这是for循环的正常行为,但我无法理解如何使用不同的东西来实现它。也许阵列会有用?

    1 回复  |  直到 2 年前
        1
  •  1
  •   Barmar Eduardo López    2 年前

    你完全可以在 awk

    awk '$1 > 100 { print $2 }' "$CFILE"
    
        2
  •  0
  •   RARE Kpop Manifesto    2 年前
    {m,g}awk '$!NF = $(NF *= 100<+$_)'