如何使用 printf 生成 N 列



我目前正在使用:

printf "%14s  %14s  %14s  %14s  %14s %14sn" $(cat NFE.txt)>prueba.txt

这将读取NFE.txt中的列表并生成 6 列。我需要生成 N 列,其中 N 是变量。

有没有一种简单的说法,比如:

printf "N*(%14s)n" $(cat NFE.txt)>prueba.txt

哪个产生欲望输出?

# T1 is a white string with N blanks
T1=$(printf "%${N}s")
# Replace every blank in T with string %14s and assign to T2
T2="${T// /%14s }"
# Pay attention to that T2 contains a trailing blank.
# ${T2% } stands for T2 without a trailing blank
printf "${T2% }n" $(cat NFE.txt)>prueba.txt
你可以

这样做,尽管我不知道它会有多强大

 $(printf 'printf '; printf '%%14s%0.s' {1..6}; printf '\n') $(<file)
                                           ^
                                   This is your variable number of strings

它打印出具有正确字符串数量的命令,并在子外壳中执行它。

输入

10 20 30 40 50 1 0
1 3 45 6 78 9 4 3
123 4
5 4 8 4 2 4

输出

        10            20            30            40            50             1
         0             1             3            45             6            78
         9             4             3           123             4             5
         4             8             4             2             4

你可以用纯粹的bash来写这个,但你可以只使用现有的语言。例如:

printf "$(python -c 'print("%14s  "*6)')n" $(<NFE.txt)

在纯粹的 bash 中,您可以编写,例如:

repeat() { (($1)) && printf "%s%s" "$2" "$(times $(($1-1)) "$2")"; }

然后在 printf 中使用它:

printf "$(repeat 6 "%14s  ")n" $(<NFE.txt)

相关内容

  • 没有找到相关文章

最新更新