Awk:不同数量元素的格式化打印
Awk: formatted print of varying number of elements
我想打印包含不同数量元素的记录,或者,例如,锯齿状数组。元素类型是 %s 后跟不确定数量的 %d。
示例输入、伪代码、所需输出:
$ echo "abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112" |
awk '{printf "% 10s % 5d % 5d*.......", <each element>'
$ abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112
% 5d*.......
如何指定重复格式的子串?
<each element>
如何声明每个元素?
是否有等同于 C 的 vprintf 的 (g)awk 或者说 printf "%s *%d" el for el in array
其中 %d 说明符自动重复正确的次数。
我在 google 上找不到任何让我感到惊讶的东西。我无法想象我是第一个想要以漂亮的格式打印锯齿状数组的人。
echo "abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112" |
awk '{printf "%10s", OFS;
for(i=2;i<=NF;i++) printf "%5d", $i OFS;
print ""}'
abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112
$ echo "abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112" |
awk '{printf "%10s", ; for (i=2;i<=NF;i++) printf "%s%5d", OFS, $i; print ""}'
abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112
我想打印包含不同数量元素的记录,或者,例如,锯齿状数组。元素类型是 %s 后跟不确定数量的 %d。
示例输入、伪代码、所需输出:
$ echo "abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112" |
awk '{printf "% 10s % 5d % 5d*.......", <each element>'
$ abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112
% 5d*.......
如何指定重复格式的子串?
<each element>
如何声明每个元素?
是否有等同于 C 的 vprintf 的 (g)awk 或者说 printf "%s *%d" el for el in array
其中 %d 说明符自动重复正确的次数。
我在 google 上找不到任何让我感到惊讶的东西。我无法想象我是第一个想要以漂亮的格式打印锯齿状数组的人。
echo "abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112" |
awk '{printf "%10s", OFS;
for(i=2;i<=NF;i++) printf "%5d", $i OFS;
print ""}'
abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112
$ echo "abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112" |
awk '{printf "%10s", ; for (i=2;i<=NF;i++) printf "%s%5d", OFS, $i; print ""}'
abc 1 2 3 4 5
def 8 9
sometext 5000 23 4 34 56 112