我正在从终端运行一个应用程序(CoronaSDK Simulator),该应用程序在每一行输出前面都放置了一个非常长的时间戳。
有没有办法使用 sed 之类的东西来切断它,而不是在它进来时输出其他所有东西(即不必等到程序结束)?
我已经尝试了几件事,但到目前为止没有运气......
以下是一些示例行:
2013-02-14 12:39:49.028 Corona Simulator[40803:707] |timer created
2013-02-14 12:39:49.029 Corona Simulator[40803:707] __in deck.lua__
2013-02-14 12:39:49.030 Corona Simulator[40803:707] storyboard.roomData.layout=A1 (room.lua)
我想看起来像这样:
|timer created
__in deck.lua__
storyboard.roomData.layout=A1 (room.lua)
我试过了
coronasim ./ | sed 's/Corona Simulator//'
作为测试,和
coronasim ./ | sed -e 's/^.* //'
如下所示,甚至
coronasim ./ > /dev/null
但似乎没有任何改变输出。
解决方案是这样的:
coronasim ./ 2>&1 | sed -e 's/^.*] //'
根据下面 choroba 的建议。似乎 Corona SDK 模拟器将输出发送到 stderr 而不是 stdout。
对于其他感兴趣的人,创建了一个简单的 bash 脚本,在模拟器的当前导向器中运行该程序,去除时间戳:
/Applications/CoronaSDK/Corona\ Simulator.app/Contents/MacOS/Corona\ Simulat
or ./ 2>&1 | sed -e 's/^.*] //'