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

  • Разделить команду и аргументы и вставить в переменную в сценарий bash
  • ImageMagick + ruTorrent-статистика (Github repo)
  • awk для извлечения аргумента опции
  • слияние файлов и получение значений столбцов на основе поля id
  • Сценарий, чтобы избежать запуска повторных предупреждений из файла журнала
  • Форматирование файла в формате HTML
  • Как обновить даты (на 30 дней) в файлах, идущих в это конкретное место в unix?
  • Почему этот скрипт рыбы не запускается из пусковой установки?
  • One Solution collect form web for “awk не делает новую строку”

    замещать

     echo $USERS 

    с:

     echo "$USERS" 

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

    Linux и Unix - лучшая ОС в мире.