awk простой printf синтаксис

Я практикую функции printf с командой awk.

echo "unix" | awk '{printf "%5s\n", "hi"}'
awk '{printf "%20s\n", "hi"}'

Первая команда с эхом печатает "привет". Однако вторая команда, вызывающая проблему. Его вывод продолжает продолжаться. Как делают я решаю эту проблему так, чтобы она сделала точно, что делает первая команда.

1
задан 13 February 2017 в 07:18

1 ответ

awk циклы на каждой записи входа. Если никакие входные файлы не указаны, это использует стандартный вход. Если Вы хотите выполнить выражение, не используя входа, используйте BEGIN блок, и ничего не сохраните снаружи:

$ awk 'BEGIN {print "foo"}'
foo

Так, в Вашем случае:

awk 'BEGIN {printf "%20s\n", "hi"}'

Обычно, BEGIN блок выполняется, прежде чем любой вход читается. Так, это выполняется, существует ли какой-либо вход, и так как нет никаких других выражений для выполнения, awk просто выходы.

можно также использовать exit, чтобы заставить awk выйти из цикла:

awk '{printf "%20s\n", "hi"; exit}'
3
ответ дан 7 December 2019 в 12:35

Другие вопросы по тегам:

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