grepping конкретная матрица и печать в одной строке

У меня есть один файл, содержащий ключевые слова word1 и word2 а под word2 есть матрица как file.dat

  position1: [ 0.0000000, 0.0000000, 0.0000000 ] word1: 0.0000000 band: - # 1 word2 : 0.32015595 0.18484212 0.00000000 0.00000000 0.36968424 0.00000000 0.00000000 0.00000000 0.08286072 position2: [ 0.5000000, 0.0000000, 0.0000000 ] word2: 0.0000000 band: - # 1 word2 : 0.45015595 0.53484212 0.00000000 0.00000000 0.36968424 0.00000000 0.00000000 0.00000000 0.02476072 . . 

Теперь я хочу сделать файл формата

 position1 word1 word2 position2 word1 word2 . . 

но здесь матрица word2 в одной строке как

 0.0000000 0.0000000 0.0000000 0.0000000 0.32015595 0.18484212 0.00000000 0.00000000 0.36968424 0.00000000 0.00000000 0.00000000 0.08286072 

я использовал оценку

 awk '/ position | word1 | word2/ {w=w "$2" } END {print w} 

но это не дает ожидаемого результата, кто-нибудь может мне помочь? Спасибо

  • Как объединить два файла в один с столбцами для данных каждого файла?
  • Попросив свой сценарий принять аргументы, содержащие пробелы
  • и всегда эквивалентны?
  • Установить переменную на случайный элемент в массиве
  • Как использовать команды в файлах, начинающиеся с «-»
  • Простой скрипт Bash; Только работает?
  • Как эхо / напечатать последнюю итерацию в этом цикле
  • Как использовать вывод команды для процесса в цикле в Bash?
  • One Solution collect form web for “grepping конкретная матрица и печать в одной строке”

     $ awk -F': ' '/position[0-9]+:|word[0-9]+:/ {w=w" "$2 }; /^[0-9. ]+$/ { w=w" "$0 }; /^[[:blank:]]*$/ || eof {if (w) {gsub(/,/,"",w);print w;w=""}}' muthu.txt [ 0.0000000 0.0000000 0.0000000 ] 0.0000000 0.32015595 0.18484212 0.00000000 0.00000000 0.36968424 0.00000000 0.00000000 0.00000000 0.08286072 [ 0.5000000 0.0000000 0.0000000 ] 0.0000000 0.45015595 0.53484212 0.00000000 0.00000000 0.36968424 0.00000000 0.00000000 0.00000000 0.02476072 

    Альтернативно, с (IMO) немного лучше форматирование:

     $ awk -F': ' '/position[0-9]+:/ {p=$2 }; /word[0-9]+:/ {w=$2}; /^[0-9. ]+$/ { if (!w2) { w2="[" }; w2=w2" ["$0" ]" }; /^[[:blank:]]*$/ || eof { l=p" "w" "w2; gsub(/ +/," ",l); gsub(/,/,"",l); if (l ~ /^[[:blank:]]*$/) {next}; print l" ]"; p=w=w2="" }' muthu.txt [ 0.0000000 0.0000000 0.0000000 ] 0.0000000 [ [ 0.32015595 0.18484212 0.00000000 ] [ 0.00000000 0.36968424 0.00000000 ] [ 0.00000000 0.00000000 0.08286072 ] ] [ 0.5000000 0.0000000 0.0000000 ] 0.0000000 [ [ 0.45015595 0.53484212 0.00000000 ] [ 0.00000000 0.36968424 0.00000000 ] [ 0.00000000 0.00000000 0.02476072 ] ] 

    Оба они предполагают, что входные данные находятся в параграфах, разделенных 1 или более пустых строк.

    Interesting Posts

    find -type f все еще возвращает каталоги, как остановить это?

    Удалите x строк до и y строк после n-й строки (которая соответствует шаблону) в файле

    Невозможно получить lm-датчики, чтобы правильно разобраться или загрузить ATI Radeon temp и fan

    В сценарии оболочки, Как передать переменную другое значение после выполнения одного задания?

    Разрешение системной зависимости от Amazon Linux для установки RabbitMQ

    Как создать зашифрованный пароль

    Можно ли убить другой пользовательский процесс, используя привилегии sudo?

    Проблема отправки электронной почты с помощью ssmtp

    Скопируйте и вставьте текст в Xterm на OpenBSD

    Мониторинг устройств cisco от linux или windows?

    Монтаж окон 10 GPT Partition centos 6

    Проблема с java3d

    Как я могу настроить /etc/kmscon/kmscon.conf для использования определенного шрифта a) и b) раскладки клавиатуры?

    Что вы используете, когда не можете использовать Bash?

    Обновите swig 2.0 или новее

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