Этот код в 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"
потому что я создаю файл визуальных результатов синтаксического анализа и заранее не знаю количество аргументов. Есть ли решение в Сюда?
@EdMorton: моя проблема заключалась в том, чтобы выяснить, существует ли способ собрать данные из столбцов, объединить их в строку и затем отформатировать с помощью printf. Но похоже, что это не может работать из-за обязательного наличия запятых между собранными строками вне каждой строки. Как я сказал JNevill, я нашел другой способ, который состоит в форматировании собранных строк перед их объединением. Вполне возможно, что у этой проблемы нет решения.
Без минимальный воспроизводимый пример, включая краткий, тестируемый образец ввода и ожидаемый выходной idk, если есть решение или нет, как idk, какую именно проблему вы пытаетесь решить.
Я не верю, что вы можете сделать всю строку таким образом, поскольку запятые обрабатываются как строковые литералы в функции printf
, когда они передаются через одну подобную переменную. Вы могли сделать:
var1 = "\"%-15s %-15s\n\"";
var2 = "\"oooo\"";
var3 = "\"nnnn\"";
printf var1,var2,var3;
Хорошо, это работает, но это не решает мою проблему, потому что я не знаю заранее количество аргументов. Возможно, массив содержит переменную .....
Вместо строки храните ваши аргументы в массиве, перебирайте массив в конце и печатайте.
Я нашел другой способ: я конвертирую каждый аргумент с помощью printf, прежде чем объединить их в обычную строку. Но я оставляю этот пост открытым, потому что он может быть полезным.
В вашем примере
var3
- это просто строка, созданная из конкатенации строк, содержащихся в других переменных,var1
иvar2
, поэтому, когда вы используете ее какprintf var3
, вы используете ее как строку форматирования без данных. Ни в одной точке вашего кода у вас нет даже двух элементов данных для использования сvar1
в качестве строки форматирования, так что вы действительно надеетесь, что это произойдет с вашим кодом. Если вы покажете нам, что вы пытаетесь сделать, а не как вы пытаетесь это сделать, мы можем помочь.