Как добавить символ новой строки с завершающими пробелами с помощью printf? - PullRequest
1 голос
/ 11 февраля 2020

У меня есть следующая команда printf, которая работает правильно, добавляя 5 пробелов после строки ABC, а затем печатает строку "DEF".

printf '%s%*s' "ABC" 5 '' "DEF" 

Я хотел бы добавить символ новой строки в конце после строки DEF, но я не знаю, как это сделать. Я безуспешно пытался:

user /d
$ printf '%s%*s' "ABC" 5 '' "DEF\n"
ABC     DEF\n

user /d
$ printf '%s%*s\n' "ABC" 5 '' "DEF"
ABC
DEF

Как это сделать? заранее спасибо

Ответы [ 2 ]

4 голосов
/ 11 февраля 2020

Добавить еще один заполнитель строки для DEF и символ новой строки:

printf '%s%*s%s\n' "ABC" 5 '' "DEF"
2 голосов
/ 11 февраля 2020

Вы можете использовать $'\n' для получения новой строки:

printf '%s%*s' "ABC" 5 '' $'DEF\n'

Это не работает с

printf '%s%*s\n' "ABC" 5 '' "DEF"

, потому что формат printf является одним из коротких аргументов. Сначала %s используется для ABC, а затем %*s используется для вывода 5 пробелов. Но для DEF нет формата, поэтому \n добавляется к обоим аргументам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...