使用printf格式的变量

fedorqui'停止伤害'

假设我有一个像这样的文件:

$ cat a
hello this is a sentence
and this is another one

我想打印前两列,中间有一些填充。由于此填充可能会更改,因此我可以使用7

$ awk '{printf "%7-s%s\n", $1, $2}' a
hello  this
and    this

17

$ awk '{printf "%17-s%s\n", $1, $2}' a
hello            this
and              this

25或…您明白了这一点:数字可能有所不同。

然后出现一个问题:是否可以向this分配变量N,而不是将整数硬编码为%N-s格式?

我尝试这些事情没有成功:

$ awk '{n=7; printf "%{n}-s%s\n", $1, $2}' a
%{n}-shello
%{n}-sand

$ awk '{n=7; printf "%n-s%s\n", $1, $2}' a
%n-shello
%n-sand

理想情况下,我想知道是否可以这样做。如果不是,最好的解决方法是什么?

Jaypal Singh

如果*在格式字符串中使用,它将从参数中获取一个数字

awk '{printf "%*-s%s\n", 17, $1, $2}' file
hello            this
and              this

awk '{printf "%*-s%s\n", 7, $1, $2}' file
hello  this
and    this

《 GNU Awk用户指南#5.5.3 printf格式的修饰符》所述

支持C库printf的动态宽度和精度功能(例如,“%*。* s”)。而不是在格式字符串中提供显式的宽度和/或prec值,而是在参数列表中传递它们。例如:

w = 5
p = 3
s = "abcdefg"
printf "%*.*s\n", w, p, s

完全等同于:

s = "abcdefg"
printf "%5.3s\n", s

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在printf格式说明符Java中使用变量

来自分类Dev

使用Printf转义变量

来自分类Dev

使用printf输出变量

来自分类Dev

使用`printf`打印包含%%百分号的变量会导致“ bash:printf:`p':无效格式字符”

来自分类Dev

使用_Generic进行printf格式化

来自分类Dev

使用printf格式化数组的输出

来自分类Dev

bash +使用printf以特殊格式打印

来自分类Dev

使用printf将格式设置为$ 0

来自分类Dev

printf 的格式

来自分类Dev

Linux bash printf格式,颜色分配给变量

来自分类Dev

如何在C编程中调用变量以指定printf的格式

来自分类Dev

(Linux) 将变量格式化为列 printf

来自分类Dev

使用可变格式的Printf格式-此var引用什么?

来自分类Dev

结构变量使用printf更改值

来自分类Dev

在格式字符串位于变量中并且没有固定数量的字段占位符的情况下,使用shell'printf'吗?

来自分类Dev

在bash脚本中使用printf格式化输出

来自分类Dev

使用printf在Java中格式化输出

来自分类Dev

使用printf()的格式说明符“%*。* s”绘制菱形

来自分类Dev

使用printf格式化输出:截断或填充

来自分类Dev

在格式化的printf中使用#define定义精度

来自分类Dev

使用printf函数C格式化间距

来自分类Dev

使用通过xargs传递的printf格式化输出

来自分类Dev

使用printf在文件的开头插入格式化的文本

来自分类Dev

使用 printf 和 AWK 正确格式化我的输出

来自分类Dev

尝试在 Java 中使用 printf() 格式化发票

来自分类Dev

Java中的printf格式

来自分类Dev

带条件格式的Printf

来自分类Dev

IDL Printf格式

来自分类Dev

Java中的printf格式