Unix下如何让终端省略时间戳列输出,同时带时间戳写入文件?
解决方案
你只需要在原命令的基础上,给tee的输出再追加一个管道,用来移除每行的第一列时间戳——这样终端就只会显示原始脚本的输出内容,而output.txt依然会保留带时间戳的完整数据。
方法一:用cut快速处理(推荐)
这是最简洁的实现方式,指定空格为字段分隔符,直接提取从第二字段到行尾的内容:
./small_script.sh | while read R; do echo "$(date +%s) $R"; done | tee output.txt | cut -d' ' -f2-
方法二:用awk处理复杂空格场景
如果你的脚本输出里存在连续空格,awk的处理会更稳妥,它会自动忽略字段间的多余空格:
./small_script.sh | while read R; do echo "$(date +%s) $R"; done | tee output.txt | awk '{ $1 = ""; print substr($0, 2) }'
效果验证
output.txt文件中会完整保留带时间戳的内容,和你之前的结果一致:1526635998 Darwin 1526635998 17.4.0 1526635998 Darwin C02V41QWHV2R 17.4.0 Darwin Kernel Version 17.4.0 .. 1526635998 /Users/home/duraja- 终端只会显示去掉时间戳后的原始输出:
Darwin 17.4.0 Darwin C02V41QWHV2R 17.4.0 Darwin Kernel Version 17.4.0 .. /Users/home/duraja
内容的提问来源于stack exchange,提问作者duraja
相关产品推荐
相关产品推荐

