Awk 如何使用带字符串的printf作为参数?

Awk 如何使用带字符串的printf作为参数?,awk,printf,Awk,Printf,awk中的此代码不适用于printf: var1 = "%-15s %-15s\n" var2 = "\"oooo\",\"nnnn\"" var3 = var1 var2 printf var3 Updated : no var3 printf var1,var2 我希望它能像这样工作: printf "%-15s %-15s","oooo","nnnn" 因为我正在构建一个解析的可视化结果文件,我事先不知道参数的数量。 这种方法有什么解决方案吗?我不相信你可以这样处理整个字符串,因为在

awk
中的此代码不适用于
printf

var1 = "%-15s %-15s\n"
var2 = "\"oooo\",\"nnnn\""
var3 = var1 var2
printf var3

Updated :
no var3
printf var1,var2
我希望它能像这样工作:

printf "%-15s %-15s","oooo","nnnn"
因为我正在构建一个解析的可视化结果文件,我事先不知道参数的数量。
这种方法有什么解决方案吗?

我不相信你可以这样处理整个字符串,因为在
printf
函数中,当通过这样一个变量提供时,逗号被视为字符串文本。你可以做:

   var1 = "\"%-15s %-15s\n\"";
   var2 = "\"oooo\"";
   var3 = "\"nnnn\"";
   printf var1,var2,var3;

好的,它是有效的,但它不能解决我的问题,因为我事先不知道争论的数量。可能是一个变量的数组intead…..而不是字符串将参数存储在一个数组中,在结尾处迭代数组并打印。我找到了另一种方法,在转换每个参数之前使用printf将它们连接到一个常规字符串中。但是我打开这篇文章是因为它可能会很有用。在你的例子中,
var3
只是一个字符串,它是由其他变量,
var1
var2
中的字符串串联而成的,所以当你将它用作
printf var3
时,你将它用作一个没有数据的格式化字符串。在您的代码中,您甚至没有两个数据项可与
var1
一起用作格式化字符串,因此idk您希望代码中会出现什么情况。如果你告诉我们你想做什么,而不是如何做,那么我们可以提供帮助。@EdMorton:我的问题是,是否有一种方法可以从cols收集数据,将其连接成字符串,然后用printf格式化。但它看起来无法工作,因为每个字符串外部收集的字符串之间必须存在逗号。正如我对JNevill所说的,我发现了另一种方法,即在连接收集的字符串之前格式化它们。如果没有一个简洁的、可测试的样本输入和预期的输出idk(如果有解决方案或没有idk),那么问题就有可能没有解决方案。如果没有idk,那么您要解决的到底是什么问题。