Я практикую функции printf с командой awk.
echo "unix" | awk '{printf "%5s\n", "hi"}'
awk '{printf "%20s\n", "hi"}'
Первая команда с эхом печатает "привет". Однако вторая команда, вызывающая проблему. Его вывод продолжает продолжаться. Как делают я решаю эту проблему так, чтобы она сделала точно, что делает первая команда.
awk
циклы на каждой записи входа. Если никакие входные файлы не указаны, это использует стандартный вход. Если Вы хотите выполнить выражение, не используя входа, используйте BEGIN
блок, и ничего не сохраните снаружи:
$ awk 'BEGIN {print "foo"}'
foo
Так, в Вашем случае:
awk 'BEGIN {printf "%20s\n", "hi"}'
Обычно, BEGIN
блок выполняется, прежде чем любой вход читается. Так, это выполняется, существует ли какой-либо вход, и так как нет никаких других выражений для выполнения, awk
просто выходы.
можно также использовать exit
, чтобы заставить awk выйти из цикла:
awk '{printf "%20s\n", "hi"; exit}'