Проблема извлечения данных на основе слов верхнего регистра

У меня есть файл данных в следующем формате:

source.dat ( пример для иллюстрации ).

ALBANIA Duck 1000 BELGIUM CHARLEROI Donald Duck 10234 CYPRUS J. Mickey 567 

Я ищу сценарий Linux (Bash, perl, whatever) для извлечения информации в формате csv с заданными правилами:

  • 1-е поле в csv содержит только все слова, которые находятся в верхнем регистре
  • Третье поле в csv содержит последнее поле ввода (число)
  • Второе поле в csv содержит оставшуюся среднюю часть

Таким образом, ожидаемый результат должен быть:

output.csv

 ALBANIA,Duck,1000 BELGIUM CHARLEROI,Donald Duck,10234 CYPRUS J.,Mickey,567 

2 Solutions collect form web for “Проблема извлечения данных на основе слов верхнего регистра”

Портабельно:

 sed 's/\([^[:lower:]]*\) \(.*\) /\1,\2,/' < source.dat > output.csv 

Если вы делаете это напрямую

 sed -r 's/([[:upper:] .]+)\s+(.*)\s+([0-9]+)\s*$/\1,\2,\3/' file 

Как мы видим, поле1 остается на месте, поэтому мы можем упростить скрипт

 sed -r 's/\s+(\w*[[:lower:]].*)\s+([0-9]+)\s*$/,\1,\2/' file 

даже

 sed -r 's/\s+(\w*[[:lower:]].*[^0-9])\s+/,\1,/' file 
  • Преобразование вывода команды в csv с отметкой времени
  • Помогите прочитать плоский файл в unix и вывести на упрощенный формат csv для импорта в excel
  • Использование фиксированных строк в регулярных выражениях?
  • Использование соединения с пробелом в ключе
  • Преобразование единиц CSV
  • Подсчитайте количество вхождений значения столбца в TSV-файл с AWK
  • Удалите строку, если регулярное выражение существует только в 1-м столбце каждой строки в файле csv
  • Как фильтровать базовые csv по столбцам
  • awk: разделить столбец, распечатать левую часть разделителя и вставить в середине csv
  • Подсчитайте максимальную длину символа для всех полей данных в упрощенном файле csv и выведите на txt
  • объединить несколько строк данных, имеющих одно общее поле
  • Interesting Posts

    Добавить и скомпилировать apt-get менеджер пакетов для LFS

    Authconfig завораживает переписывание файла / etc / sysconfig / authconfig, испорченного запуска Puppet

    Использование источника, загружаемого в Windows на платформе Linux

    Подтверждение SSL-сертификата для xampp localhost

    Как вы помните последний (n-й?) Переданный аргумент предыдущей команды, которую вы использовали с bash?

    Оперативная загрузка Debian завершается с ошибкой в ​​оболочке initramfs, говоря «невозможно перечислить USB-устройство»

    Есть ли ссылка для ассемблерного вывода, созданного `awk -W dump`?

    Как установить openssh в Crux Linux

    Скрипт Perl работает отлично в интерактивной оболочке, но не как задание cron

    Интерфейс Vim в полях ввода веб-браузера?

    Выбор файловой системы для общего диска (а не файловой системы кластера, такой как GFS)

    Почему «кому мил» разрешено выпускать продукцию?

    включить часовую зону IST в марионеточной

    Как создать инструмент с конкретными библиотеками, не нарушая работу Fedora?

    Как подключить и выполнить передачу данных на мобильный с встроенной платы linux с помощью bluez?

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