我有一个脚本将时间戳转换为秒,所以我最终可以计算平均值.我注意到输出行的数量不等于输入行的数量.实际上它似乎没有阅读第一行.我简化了代码来检查它,但每次都是一样的.
输入文件如下所示:
00:00:01 00:00:02 00:00:03
输出如下:
00 00 02 00 00 03
这是脚本:
#!/bin/bash while read line do awk -F: '{ print $1, $2, $3 }' > /home/time.log done < /home/timestamp.log
我确定这是愚蠢的,但我看不到它!
你不需要循环.你可以简单地使用awk:
awk -F: '{ print $1, $2, $3 }' /home/timestamp.log > /home/time.log
您看到的行为的原因是您没有传递line
给awk.所以读取循环读取第一行,并在循环中通过awk休息,因为awk 从循环中获取stdin.因此,你没有看到第一行.
如果它仍然是不明确的,只是添加echo "Hello"
后的awk
你的循环中调用,看看它是如何被多次印刷:)
你可能打算这样做:
echo $line | awk -F: '{ print $1, $2, $3 }' > /home/time.log
但这只是不必要的.