Дополнительный % в выводе awk сценария

Вы можете контроль pdfdraw от mupdf (пакет mupdf-tools под Debian/Debian-derivatives).

Из его описания:

pdfdraw представит документ в формате PDF к файлам изображений. Поддерживаемые форматы изображения: pgm, ppm, pam и png. Выберите страницы, которые будут представлены путем определения списка разделенных запятой значений диапазонов и отдельных номеров страниц, например: 1,5,10-15). Ни на каких страницах указаны, все страницы будут представлены.

Возможно, это быстрее для Вашего варианта использования.

Например, mupdf (средство просмотра PDF), действительно быстро (и использует очень мало памяти) для большого количества документов, с которыми я протестировал ее.

1
12.12.2012, 18:21
2 ответа

Как manatwork уже прокомментировал, % не часть вывода от awk, это - следующая подсказка от оболочки. В END блок, для этого входного файла, существует три вызова к printf. Первые выводы 6 и пространство, вторые выводы 7 и пространство и третьи выводы 10 и пространство. После этого awk выходы и оболочка печатает ее подсказку.

Если команда распечатает некоторый вывод, который не заканчивается в новой строке (или, в более общем плане, если это не оставит курсор в начале строки), то в зависимости от конфигурации Вашей оболочки, оболочка или распечатает свою подсказку после вывода команды на той же строке, или оболочка могла бы стереть незавершенную строку и распечатать ее подсказку в начале строки.

Для проверки вывод команды полностью видим, удостоверьтесь, что он заканчивается в новой строке (если команда не производит вывода, конечно). В системах Unix непустой текстовый файл всегда заканчивается новой строкой, потому что текстовые файлы состоят из (возможно пустой) серия строк, каждая из которых состоит из (возможно пустой) серия символов кроме новой строки (и пустые байты). Большинство утилит имеет тенденцию быть разработанным для контакта, прежде всего, с текстовыми файлами, поэтому удостоверьтесь, что вывод команды является допустимым текстовым файлом.

После печати полей распечатайте a "\n" (awk нотация для символа новой строки), или вызов print функция, которая добавляет новую строку после печатаемого текста.

END { for (i=1; i<=NF; i++) printf "%d ", sum[i]; print ""; }

или, чтобы не иметь дополнительное пространство в конце строки:

END { for (i=1; i<NF; i++) printf "%d ", sum[i]; printf "%d\n", sum[NF]; }

или

END { printf "%d"; for (i=2; i<=NF; i++) printf " %d", sum[i]; print ""; }

или

END { for (i=1; i<NF; i++ ) printf "%d%s", sum[i], (i==NR ? "\n" : " "); }
1
27.01.2020, 23:29
END { for (i=1; i<=NF; i++ ) { printf "%d ", sum[i] } ; print "" }
2
27.01.2020, 23:29

Теги

Похожие вопросы