我想尾尾的文件,但只输出行中有一定的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将省略第一行。