跳轉到內容

從 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 進行快速繪圖

華夏公益教科書