grep後保存到文件爲空的異常

  • 一:緣起

昨夜雨疏風驟,家裏飯菜已好. 趕着下班.

但是爲了監控一個安卓設備的軟件問題.

於是乎,  輸入  adb logcat |grep *********>my.log   (*****就是某關鍵字)

準備監控一晚上,明早來看看日誌中有沒有要的記錄.

今朝來看,my.log裏面一片空白.   按住ctrl+c終止命令後. my.log裏面還是什麼都沒有.

然而輸入"adb logcat |grep *********"  卻是有一大片內容的

爲什麼不能重定向輸入到文件呢?

------------------------------------------------

  • 二:衆裏尋他千百度

難道grep的問題;  輸入"echo ** |grep *********>my.log" 是可以的

又或是adb的問題? 嘗試"adb logcat -d |grep *********>my.log"  也寫進去了

說明不是這2個原因, 

默然回首是否是緩衝的問題呢,百度了一下果然"那人的確在燈火闌珊處"

grep 在控制檯裏面直接輸出,是用了行緩衝區,也就是收到一行就輸出了.能看到內容

但是將他重定向輸出到文件,則用的是full緩衝,必須等輸出全部結束才寫入.

所以中途看不到,按住ctrl+c,結束進程(直接退出)也寫不進去.

--------------------------------------------------

  • 三:解決

grep命令增加 "--line-buffered" 參數 設置爲行緩衝

adb logcat | grep XXX --line-buffered > my.log

日誌隨後徐徐寫之. 問題解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章