Intereting Posts
Скритичные разделы GPT с использованием разделенных Сохранять вывод из одной команды и обрабатывать ее для другого Есть ли какой-либо CLI-мультизагрузочный ISO-носитель USB в Linux? Предоставить разрешение учетной записи для проверки статуса услуги Если поведение пустого условия Ошибка установки PandaSeq: требуется ltld, установить библиотеку libtool Синхронизация каталогов в обоих направлениях с помощью rsync Никакой синтаксической раскраски в vim для меня, но нормально для моих учеников В то время как Loop Breaking Half Way Through File Смонтируйте коллекцию файлов в среде linux ubuntu не запускается после обновления-grub Как позволить ядру не запускать printk с KERN_DEBUG Fedora не загрузится после установки драйверов Nvidia Как я могу проверить кодировку текстового файла … Действительно ли это, и что это такое? Вывод процесса `find` обрабатывает определенные поля

awk не делает новую строку

Я пытаюсь распечатать пользователей, которые в настоящее время вошли в систему (каждый зарегистрированный пользователь каждого терминала). Это то, что я сейчас имею:

NOWDATE=$(date +"%Y-%m-%d") NOWTIME=$(date +"%T") USERS=$(who | awk -v nd="$NOWDATE"_"$NOWTIME" '{printf nd "\n" " User: "$1" Terminal: "$2" Login: "$3" "$4 "\n"}') 

К сожалению, \n не работает, а это значит, что я не могу получить новую строку после переменной $4 . На выходе не появляются новые строки. Как я могу добиться того, что printf создает новую строку после переменной $4 ?

Примечание. Я просто выполняю эхо, чтобы перечислить пользователей, поэтому echo $USERS

замещать

 echo $USERS 

с:

 echo "$USERS" 

В отношении некотируемых переменных, например, в echo $USERS , оболочка выполняет разбиение слов . Это означает, что все символы пробела, такие как newline, заменяются первым символом в IFS (по умолчанию: пробел). Если вы хотите сохранить свои новые строки, используйте двойные кавычки.