計算兩個時間相隔, 同時思考指令碼語言
阿新 • • 發佈:2019-01-23
任務
[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
(提取子串應該是正則式的終極應用之一了,也能驗證出語言對正則式的支援程度)
這樣確實低效,就不難理解為何會出現perl了。
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,他們需要呼叫相應的正則表示式庫才能支援正則表示式