我目前正在使用:
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)