1. 程式人生 > >計算兩個時間相隔, 同時思考指令碼語言

計算兩個時間相隔, 同時思考指令碼語言

任務

[2016-12-31 15:59:14.383] INFO

需要把Log中類似這樣的串提取出來,並轉換為時間。


Java做法

可以做成jar包來處理

不然這麼簡單的內容,如果用jar是不是太低效了?至少yadong用jar是為了處理Excel這種複雜表格式資料

Shell, perl的對比

PS: 學習充分掌握一個工具的【用途】,但不是學習它的功能  --- 學以致用

文字操作就是正則式,《精通正則表示式》說,掌握了正則表示式,問題就能很easy處理,不然就無比難。

shell的提取子串要藉助 grep, sed的正則式找到匹配的行(串), 而awk, cut負責cut出子串。為了方便提取,也可以通過正則式先做替換,或者用tr,便於之後的處理(所謂的命令組合的強大)(再看看自己寫的logeject.sh)(Shell

指令碼中經常用到的工具有cuttrgrep、sort、uniq、re、sedawk等。

(提取子串應該是正則式的終極應用之一了,也能驗證出語言對正則式的支援程度)

這樣確實低效,就不難理解為何會出現perl了。

Shell程式設計 字串子串的提取

awk + cut方法

如:a=“aaa字串處理”

echo “aaa字串處理” | awk -F符 '{print $2}' | cut -c 1,2


知乎:

perl提取子串的例子:

Python & perl的比較

就像知乎所描述,python是個全能戰士,perl在文字處理方便應該更好用。根據需要吧。 sed - when you need to do simple text transforms on files.awk - when you only need simple formatting and summarization or transformation of data.perl - for almost any task, but especially when the task needs complex regular expressions.python - for the same tasks that you could use Perl for.
Larry Walls 在設計 Perl 這個語言之初,就是為了讓他處理文字,所以他把正則引擎直接巢狀到了語言中,而像 Python 和 Ruby,他們需要呼叫相應的正則表示式庫才能支援正則表示式