awk + как добавить список в файл

У меня есть следующий список в файле

Больше file.ex

  • получить переменную окружения по имени переменной?
  • Может ли один физический диск предоставить пространство для нескольких групп томов?
  • Можно ли назначить несколько команд одной горячей клавише? (bash, xterm)
  • Что такое / dev / disk / by-uuid / и почему он использует все свободное пространство на диске
  • «который» сообщает одно, фактическая команда - это другой
  • Почему моя новая файловая система ext4 уже отмечена как используемая?
  • efifc1a hygg4a hdy5d nhdw4s wesf3a fjfhyr jfhg gsfar 

    как добавить второй список после первого списка и третьего списка после второго списка:

     efifc1a nhdw4s jfhg hygg4a wesf3a gsfar hdy5d fjfhyr 

  • Как запускать корневые сценарии с помощью службы systemd?
  • Имитировать команду sed read с awk
  • Редактирование вывода команды как новой команды
  • Как отключить запрос записей AAAA, когда у меня нет адреса IPv6?
  • Любой лучший метод, чем это для сортировки файлов по дате создания?
  • Как выполнить замену на месте, которая создает только резервные копии файлов, которые были изменены?
  • 2 Solutions collect form web for “awk + как добавить список в файл”

    Как насчет

     awk ' BEGIN {FS="\n"; RS="\n\n+"} {for (i=1;i<=NF;i++) a[i] = a[i] == ""? $i : a[i]"\t"$i; next} END {for (i in a) print a[i]} ' file.ex 

    Тестирование:

     awk ' > BEGIN {FS="\n"; RS="\n\n+"} > {for (i=1;i<=NF;i++) a[i] = a[i] == ""? $i : a[i]"\t"$i; next} > END {for (i in a) print a[i]} > ' file.ex efifc1a nhdw4s jfhg hygg4a wesf3a gsfar hdy5d fjfhyr 

    Если вы не застряли в использовании awk, вы можете сделать это, используя команду columns autogen и команду transpose описанную здесь. Транспонирование строк и столбцов, например

     columns -c3 < file.ex | tr -s ' ' '\t' | transpose -t 

    Если вы принимаете временные файлы, вы можете сделать это как двухэтапный процесс с awk и paste :

     n=$(awk '{ print $0 > NR; close(NR) } END { print NR }' RS= file.ex) paste $(seq $n) 

    Или как однострочный:

     paste $(seq $(awk '{ print $0 > NR; close(NR) } END { print NR }' RS= file.ex)) 

    Выход в обоих случаях:

     efifc1a nhdw4s jfhg hygg4a wesf3a gsfar hdy5d fjfhyr 

    Обратите внимание: это создает пронумерованные файлы в текущем каталоге, поэтому будьте осторожны, чтобы не перезаписывать другие файлы.

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