栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Linux上的二进制grep?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux上的二进制grep?

单线输入

这是较短的单线版本:

% perl -ln0e 'print tell' < inputfile

这是一个稍长的单线:

% perl -e '($/,$) = ("","n"); print tell while <STDIN>' < inputfile

连接这两个单行代码的方法是通过取消编译第一个程序的程序:

% perl -MO=Deparse,-p -ln0e 'print tell'BEGIN { $/ = "00"; $ = "n"; }LINE: while (defined(($_ = <ARGV>))) {    chomp($_);    print(tell);}

程序输入

如果您想将其放在文件中,而不是从命令行调用它,那么这里是一个更明确的版本:

#!/usr/bin/env perluse English qw[ -no_match_vars ];$RS  = "";    # input  separator for readline, chomp$ORS = "n";    # output separator for printwhile (<STDIN>) {    print tell();}

这是很长的版本:

#!/usr/bin/env perluse strict;use autodie;  # for perl5.10 or betteruse warnings qw[ FATAL all  ];use IO::Handle;IO::Handle->input_record_separator("");IO::Handle->output_record_separator("n");binmode(STDIN);   # just in casewhile (my $null_terminated = readline(STDIN)) {    # this just *past* the null we just read:    my $seek_offset = tell(STDIN);    print STDOUT $seek_offset;}close(STDIN);close(STDOUT);

单线输出

顺便说一句,要创建测试输入文件,我没有使用过长的Python大型脚本;我只是使用了这个简单的Perl单行代码:

% perl -e 'print 0.0.0.0.2.4.6.8.0.1.3.0.5.20' > inputfile

您会发现,完成相同的工作,Perl通常比Python短2-3倍。而且您不必在清晰度上妥协;有什么比上面的一线简单?

程序输出

我知道我知道。如果您还不懂该语言,这可能会更清楚:

#!/usr/bin/env perl@values = (    0,  0,  0,  0,  2,    4,  6,  8,  0,  1,    3,  0,  5, 20,);print pack("C*", @values);

尽管这也可行:

print chr for @values;

一样

print map { chr } @values;

尽管对于那些喜欢所有严谨,细心和全部的人来说,这可能是您所看到的更多:

#!/usr/bin/env perluse strict;use warnings qw[ FATAL all ];use autodie;binmode(STDOUT);my @octet_list = (    0,  0,  0,  0,  2,    4,  6,  8,  0,  1,    3,  0,  5, 20,);my $binary = pack("C*", @octet_list);print STDOUT $binary;close(STDOUT);

TMTOWTDI

Perl支持多种处理方式,因此您可以选择最习惯的一种方式。如果这是我计划作为学校或工作项目检查的内容,那么我肯定会选择更长,更仔细的版本-
如果我使用的是单行代码,或者至少在shell脚本中添加注释。

您可以在自己的系统上找到Perl的文档。只需输入

% man perl% man perlrun% man perlvar% man perlfunc

等在您的shell提示下。如果要在网上使用漂亮的版本,请从http://perldoc.perl.org获取perl,perlrun,perlvar和perlfunc的联机帮助页。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/397555.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号