获取输入文件并使其以 24 小时制显示输入

获取输入文件并使其以 24 小时制显示输入

假设我们有文件 1:1 5 17 10 8 16 有没有办法输入该文件并使其以 24 小时制显示

前输出:100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours

答案1

杰西_b给出了部分答案在评论中,但它可能并不完全符合您的要求。

如果你准确地描述了你想要的东西,其实很简单:

while read -a nums
do
    for num in "${nums[@]}"
    do
        printf '%d00 hours ' "$num"
    done
done < file1

read -a nums读取值数组(即多个值)。  "${nums[@]}"指存储在nums数组中的值的集合; for num in …循环遍历它们,将每一个分配给num.然后我们打印每一个,后面00 hours跟一个空格。

正如您在问题中所示,这会将它们全部打印在一行上。要终止该行,请 在上述代码末尾添加echo或。printf '\n'如果您希望将每个打印在单独的行上,请将命令printf(中间)更改为

        printf '%d00 hours\n' "$num"

答案2

1 5 17 10 8 16
1 5 17 10 8 16

$ awk -F" " '{ for(i=1;i<=NF;i++) { $i=$i*100" hours"} print }' file

100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours
100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours

答案3

使用bash

$ printf '%d00 hours ' $(<file)
100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours

(输出末尾没有换行符)

具有更高级的格式:

$ printf '%02d:00 hours\n' $(<file)
01:00 hours
05:00 hours
17:00 hours
10:00 hours
08:00 hours
16:00 hours

答案4

绝对同意@Kusalananda 的一句话。这是一个非常简单的方法虽然安静冗长

awk '{print $1*100 " hours",$2*100" hours",$3*100" Hours",$4*100" hours",$5*100" hours" }' < file.txt

100 hours 500 hours 1700 Hours 1000 hours 800 hours

相关内容