跳转到内容

从 Unix 命令行进行临时数据分析/附录

来自维基教科书,开放书籍,开放世界

附录 A: pcalc 源代码

[编辑 | 编辑源代码]

一个 perl 读取-求值-打印循环。这在命令行上创建了一个非常方便的计算器。示例用法

$ pcalc 1+2
3
$ pcalc "2*2"
4
$ pcalc 2*3
6

来源

#!/opt/third-party/bin/perl
use strict;
if ($#ARGV >= 0) {
  eval_print(join(" ",@ARGV))
} else { 
  use Term::ReadLine;
  my $term = new Term::ReadLine 'pcalc';
  while ( defined ($_ = $term->readline("")) ) {
    s/[\r\n]//g;
    eval_print($_);
    $term->addhistory($_) if /\S/;
  }
}

sub eval_print {
  my ($str) = @_;
  my $result = eval $str;
  if (!defined($result)) {
    print "Error evaluating '$str'\n";
  } else {
    print $result,"\n";
  }
}

附录 B: 随机未完成的想法

[编辑 | 编辑源代码]

太好的想法,不能删除,但还没有完善。

命令行中的微型 shell 脚本

[编辑 | 编辑源代码]

示例 - 哪个 .so 包含我想要的对象?

使用反引号

[编辑 | 编辑源代码]

示例 - 按名称终止进程

[编辑 | 编辑源代码]
kill `ps auxww | grep httpd | grep -v grep | awk '{print $2}'`

示例 - 以一步轻松地跟踪最新的日志文件

[编辑 | 编辑源代码]
tail -f `ls -rt *log | tail -1`

James 的 xargs 技巧

[编辑 | 编辑源代码]

James 使用 echo 与 xargs 并以巧妙的方式将一个 xargs 的输出馈送到另一个 xargs,以构建复杂的命令行。

perl + $/ == agrep

[编辑 | 编辑源代码]

示例 - 在两个文件中查找重复键

[编辑 | 编辑源代码]

使用 gnuplot 进行快速绘图

华夏公益教科书