awk столбцы для строк разбиваются на новую строку

На моей странице stats.txt меня есть следующее:

 Get-VMHardDiskDrive | Select-Object Path ComputerName : ACD-VMH04 Path : D:\HYPER-V\VMDEV01\Virtual Hard Disks\f9314d7d-5d2d-11e0-8feb-806e6f6e6963_2012-06-29T153327.vhd VhdFormat : VHD VhdType : Dynamic Used Space : .07 Prov Space : 4.00 ComputerName : ACD-VMH04 Path : D:\HYPER-V\VMDEV01\Virtual Hard Disks\C_2012-06-29T153327.vhd VhdFormat : VHD VhdType : Dynamic Used Space : 258.04 Prov Space : 906.34 

Я запускаю следующую команду AWK чтобы дать мне следующее:

 ACD-VMH04 D:\HYPER-V\VMDEV01\Virtual Hard Disks\f9314d7d-5d2d-11e0-8feb-806e6f6e6963_2012-06-29T153327.vhd VHD Dynamic .07 4.00 ACD-VMH04 D:\HYPER-V\VMDEV01\Virtual Hard Disks\C_2012-06-29T153327.vhd VHD Dynamic 258.04 906.34 

В файле примерно 6 таких элементов, но в других файлах есть больше, поэтому мне интересно, как заставить вывод выглядеть так:

 ACD-VMH04 - D:\HYPER-V\VMDEV01\Virtual Hard Disks\f9314d7d-5d2d-11e0-8feb-806e6f6e6963_2012-06-29T153327.vhd - VHD - Dynamic - .07 - 4.00 ACD-VMH04 - D:\HYPER-V\VMDEV01\Virtual Hard Disks\C_2012-06-29T153327.vhd - VHD - Dynamic - 258.04 - 906.34 

Это несколько справится с этой задачей, но я не знаю, как это остановить и сделать новую строку, когда она попадает в пустую строку.

 awk -F " : " '{ ORS = " " } /Select-Object Path/ { output = 1; start = NR + 2 }; output && NR >= start { print $2, "-" }' stats.txt 

  • Как разбить файл, чередуя префикс, используемый для выходных файлов?
  • Лишь оставлять самую длинную линию, когда первая колонка дублируется
  • как разбить многострочные записи на awk?
  • Как чередовать два файла txt с альтернативным числом строк
  • Как я могу поменять порядок каждой пары символов в строке?
  • awk для объединения строк на основе значений ячеек
  • Преобразование таблицы в csv и обратно
  • поиск строк в шаблонах сопоставления файлов, определенных в другом файле
  • 2 Solutions collect form web for “awk столбцы для строк разбиваются на новую строку”

    У меня нет одного лайнера для вас, но ключевой концепцией здесь является сохранение поля, пока вы их не соберете, а затем распечатайте на одной строке. Также пустая строка будет иметь число полей (NF), равное нулю.

    Код:

     #!/bin/awk -f BEGIN {FS = " : "; OFS = " - "} NF > 0 { gsub(/[ ]+$/, "", $1) a[$1] = $2 } NF == 0 {dump()} END {dump()} function dump() { print a["ComputerName"], a["Path"], a["VhdFormat"], a["VhdType"] } 

    Результаты:

     ACD-VMH04 - D:\HYPER-V\VMDEV01\Virtual Hard Disks\f9314d7d-5d2d-11e0-8feb-806e6f6e6963_2012-06-29T153327.vhd - VHD - Dynamic ACD-VMH04 - D:\HYPER-V\VMDEV01\Virtual Hard Disks\C_2012-06-29T153327.vhd - VHD - Dynamic 
     perl -lne ' /Select-Object Path/ and !$a++ and <>,next; /^ComputerName\s+:/ && $a .. /^$/ || eof and do{ push @A, (/\s+:\s+\K(.*)/)[0] if /^ComputerName\s+:/ || /./; print join(" - ", splice(@A,0,@A)),"\n" if /^$/ || eof; }; ' stats.txt 

    Вывод

     ACD-VMH04 - D:\HYPER-V\VMDEV01\Virtual Hard Disks\f9314d7d-5d2d-11e0-8feb-806e6f6e6963_2012-06-29T153327.vhd - VHD - Dynamic - .07 - 4.00 ACD-VMH05 - D:\HYPER-V\VMDEV01\Virtual Hard Disks\C_2012-06-29T153327.vhd - VHD - Dynamic - 258.04 - 906.34 
    Interesting Posts

    удалить файлы, соответствующие шаблону

    Невозможно просмотреть ход файла с помощью `tail -f`

    общая папка с разрешениями для исправлений – vm libvirt qemu

    Как проверить прогресс cp, когда цель – целое устройство

    эвристически найти, как различный набор файлов

    Debian Stretch – как установить hamachi (неудовлетворительная зависимость lsb-core)

    о настройке таблицы маршрутов и ssh между vmware

    Yum всегда перечисляет некоторые пакеты

    В чем причина наличия чисел в скобках функции?

    как закрыть все панели, но текущая панель в tmux

    Безопасный переход пароля root в сценарий оболочки

    Возможно ли удаленно войти в учетную запись FTP без установки какого-либо программного обеспечения?

    Как настроить pulseaudio для использования как цифровых, так и аналоговых портов из 2 профилей?

    Как получить IP-адреса через DHCP через маршрутизатор с другого DHCP-сервера?

    Ошибка при установке Libatlas

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