Bash 如何使用printf生成N列

Bash 如何使用printf生成N列,bash,Bash,我目前正在使用: printf "%14s %14s %14s %14s %14s %14s\n" $(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 bla

我目前正在使用:

printf "%14s  %14s  %14s  %14s  %14s %14s\n" $(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

您可以用纯bash编写,但也可以使用现有的语言。例如:

printf "$(python -c 'print("%14s  "*6)')\n" $(<NFE.txt)
repeat() { (($1)) && printf "%s%s" "$2" "$(times $(($1-1)) "$2")"; }
然后在printf中使用:

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

printf“$(重复6”%14s”)\n“$(NFE.txt中的内容是一个包含如下内容的文件:text…所以一行?不起作用,但可能是我的错。我在prueba.txt中得到的只是一个问号…使用的n值是:n=$(grep-c“text”file)“1”T1中缺失。抱歉,有问题。THX分配!我仍然在这里和那里有一些问号,但可以处理
printf "$(repeat 6 "%14s  ")\n" $(<NFE.txt)