是可以过滤尾部的输出吗?

我想尾尾的文件,但只输出行中有一定的string。 这可能吗?

    使用grep。 它的build立只是为了这个目的。

    要从/ var / log / syslog尾部find包含“cron”的行,只需运行:

    tail -f /var/log/syslog | grep cron 

    而且由于它接受了stdin之外的任何东西,所以你也可以在任何其他命令的输出上使用它,通过与上面相同的方式(使用|符号)进行pipe道连接。

     tail -f /var/log/messages | grep "myfilterword" 

    希望有所帮助。

    这里有一些其他的想法,虽然不那么简单,但可以提供一些有趣的附加灵活性:

    首先,你可以使用awk来代替grep:

     tail -f /var/log/messages | awk '/myfilterword/' 

    它和使用grep的例子完全一样。 例如,您可以使用awk的强大function进行扩展。

     tail -f /var/log/messages | \ awk '/myfilterword/ { for (i=6; i<=NF; i++) printf("%s ", $i); printf("\n")}' 

    这将打印输出的最后一个字段的第6(字段是空格分隔)

    另一个类似的想法是使用Perl的一行:

     tail -f /var/log/messages | perl -ne "/myfilterword/ and print" 

    这工作完全像grep 。 也许你想要一个号码计数器,只是第六场? 这个怎么样:

     tail -f /var/log/messages | \ perl -lane "/myfilterword/ and printf \"%6d %s\n\",++\$a,\$F[6]" 

    显然,所有这些东西都可以用其他工具来完成,但是我想说明的是,在这里有一些有趣的方式来使用更通用的语言,比如awk或者perl。

    另一个值得注意的技巧,如果你有一个你想省略的头文件,例如:

     % cat data.txt fruit dessert calories Apple Pie 770 Banana Pudding 625 Cherry Cobbler 990 % tail -n +2 data.txt Apple Pie 770 Banana Pudding 625 Cherry Cobbler 990 

    无论tailinput多长时间, +n -2将省略第一行。