У меня есть текст в виде отдельных строк, где каждая строка имеет CSV-подобный формат:
SOME BUNCH OF TEXT, FIELD_A: 12, FIELD_B: 0.2321, FIELD_C: 12:10:08 2011/07/22, FIELD_D: 656
Порядок полей всегда одинаков, но некоторые поля могут отсутствовать. Между интересующими полями могут быть другие поля, например, сравнивая со строкой выше, я могу также получить следующее:
SOME BUNCH OF TEXT, FIELD_A: 12, NOT_INTERESTED: 235, FIELD_B: 0.2321, FIELD_C: 12:10:08 2011/07/22, FIELD_D: 656, FIELDS
В результате обработки этого текста я хочу получить чистый CSV-файл, в котором мои поля указываются один за другим:
12,0.2321,12:10:08 2011/07/22,656
Если какое-то поле отсутствует, то я бы хотел просто пропустить значение (например, FIELD_B отсутствовало):
12,,12:10:08 2011/07/22,656
Как я могу сделать это с помощью таких команд, как sed, perl или awk?
Я попытался извлечь отдельное поле с помощью perl -pe 's/^.*?(FIELD_A: (.*?),)?.*?$/\2/'
и потерпел неудачу - регулярное выражение просто игнорирует мое поле, даже если оно отображает