如何将十进制/浮点格式的输出写入文件?

时间:2019-02-16 03:50:42

标签: bash shell

我已经以十六进制格式输出了转换矩阵,但是我希望转换矩阵采用十进制/浮点格式。我使用以下bash脚本将矩阵文件转换为十进制格式。

您能告诉我如何将输出写入文件吗?

文件输入包含十六进制格式,并且还返回存储十进制格式的新文件。

这是我的代码:

#!/bin/bash

# Read from specified file, or from standard input
infile="${1:-/dev/stdin}"
outfile="${2:-/dev/stdout}"

while read line; do

    for number in $line; do
        a_dec="%f" "$number"
        echo $a_dec >> $outfile
    done
    echo
done < $infile


这是我的文件

0x1.fd654929143fep-1  0x1.c0657a12b37a5p-10  0x1.9666c3b501586p-9  -0x1.6aaea8d2a1c96p-3
-0x1.0c1c057bd3763p-9  0x1.fc236c525c005p-1  0x1.2d69948435847p-7  0x1.47fa54408c064p-2
-0x1.62f5b481dcd5p-9  -0x1.5d517ef6316c2p-7  0x1.01c0feebae85bp+0  0x1.04557b01aefa8p+0
0x0p+0  0x0p+0  0x0p+0  0x1p+0

1 个答案:

答案 0 :(得分:2)

假设number始终是一个数字(因此您无需对其进行验证),则只需将a_dec=分配修改为使用printf。另外,由于printf可以接受多个参数,因此可以省略内部循环:

#!/bin/bash

# Read from specified file, or from standard input
infile="${1:-/dev/stdin}"
outfile="${2:-/dev/stdout}"

while read line; do

    printf "%f " $line
    echo

    # echo $(printf "%f\n" $line)    # or this to elide the trailing space

done <"$infile" >"$outfile"