加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash脚本无法读取第一行

发布时间:2020-12-15 22:20:01 所属栏目:安全 来源:网络整理
导读:我有一个脚本将时间戳转换为秒,所以我最终可以计算平均值.我注意到输出行的数量不等于输入行的数量.实际上它似乎没有阅读第一行.我简化了代码来检查它,但每次都是一样的. 输入文件如下所示: 00:00:0100:00:0200:00:03 输出如下: 00 00 0200 00 03 这是脚本
我有一个脚本将时间戳转换为秒,所以我最终可以计算平均值.我注意到输出行的数量不等于输入行的数量.实际上它似乎没有阅读第一行.我简化了代码来检查它,但每次都是一样的.

输入文件如下所示:

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,$3 }' /home/timestamp.log > /home/time.log

您看到的行为的原因是您没有将该行传递给awk.所以读取循环读取第一行,并在循环中通过awk休息,因为awk从循环中获取stdin.因此,你没有看到第一行.

如果它仍然不清楚,只需在循环中的awk调用后添加一个echo“Hello”,看看它被打印多少次:)

你可能打算这样做:

echo $line | awk -F: '{ print $1,$3 }' > /home/time.log

但这只是不必要的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读