假设我们有文件 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