Linux下如何在重定向输出时为每行添加当前日期?
问题描述
我当前通过以下命令将Python脚本的输出重定向到文件:
python checkTemps.py >> test.txt
每次运行时,该命令会向test.txt追加一行CSV格式的数据:
71.2, 74.1, 63.8, 69.2, 74.64, 73.85, 76.08
我希望在每行开头插入当前日期/时间及逗号,使输出格式如下:
2023-08-30_20:45, 71.2, 74.1, 63.8, 69.2, 74.64, 73.85, 76.08
我尝试过以下写法但未成功:
echo $(date +%Y-%m-%d_%H:%M), python checkTemps.py >> test.txt
解决方法
你之前的命令错误在于,echo只会输出日期字符串和python checkTemps.py这段文本,不会实际执行脚本并获取它的输出。以下是几种可行的单行命令实现需求:
方法一:命令替换拼接输出
echo "$(date +%Y-%m-%d_%H:%M), $(python checkTemps.py)" >> test.txt
$(python checkTemps.py)会执行脚本并捕获其输出,随后与日期字符串拼接后一起追加到文件中。
方法二:printf格式化输出
printf "%s, %s\n" "$(date +%Y-%m-%d_%H:%M)" "$(python checkTemps.py)" >> test.txt
printf能按指定格式将日期与脚本输出拼接,确保格式统一,适合对输出格式有严格要求的场景。
方法三:sed添加前缀(支持多行输出)
如果脚本可能输出多行内容,可使用sed在每行开头插入日期前缀:
python checkTemps.py | sed "s/^/$(date +%Y-%m-%d_%H:%M), /" >> test.txt
sed "s/^/xxx/"表示在每行开头插入指定内容,这种方式能兼容单行或多行输出的情况。
内容的提问来源于stack exchange,提问作者Mikee
相关产品推荐
相关产品推荐

