可以输入bash strings命令吗?



strings命令是从二进制输入文件中提取可打印字符串的方便工具。我经常用它来处理文件。但是如果我想要流媒体呢?

一个用例是对特定字符串的二进制数据流进行抓取。我试着data-source | strings -- - | grep needle查看-是否将stdin视为文件类型,但这不起作用,strings只是等待。

如果您查看strings的帮助:

Usage: strings [option(s)] [file(s)]
Display printable strings in [file(s)] (stdin by default)

您可以看到,如果没有参数,stdin是默认行为。通过添加-,行为似乎改变了,这很奇怪,但我也能够重现那个结果。

所以正确的做法是:

data-source | strings | grep needle

在评论中,你问为什么不是strings datasource |grep -o needle?

如果你可以安排这个命令,使datasource是一个流,它可能会工作,但通常更容易安排使用|

例如,下面的代码在zsh中大致等价。如果不是zsh,你必须想办法在你选择的shell中做到这一点。

strings <(tail -f syslog) | grep msec
tail -f syslog | strings | grep msec

相关内容

  • 没有找到相关文章

最新更新