У меня есть вкладка с разделителем каретки (ключ = значение) и хотелось бы извлечь из нее несколько токенов, представляющих интерес.Извлечение нескольких частей строки с использованием bash
Например: Учитывая следующие входные
$ echo -e "1=A00^35=D^150=1^33=1\n1=B000^35=D^150=2^33=2"
1=A00^35=D^22=101^150=1^33=1
1=B000^35=D^22=101^150=2^33=2
Я хотел бы следующий вывод
35=D^150=1^
35=D^150=2^
Я попытался следующий
$ echo -e "1=A00^35=D^150=1^33=1\n1=B000^35=D^150=2^33=2"|egrep -o "35=[^/^]*\^|150=[^/^]*\^"
35=D^
150=1^
35=D^
150=2^
Моя проблема в том, что задать расширенное возвращает каждый матч на отдельной строке. Можно ли получить одну линию вывода для одной строки ввода? Обратите внимание, что из-за ограничений большего скрипта я не могу просто сделать слепую замену всех \ n символов в выходе.
Благодарим за любые предложения. Этот сценарий предназначен для bash 3.2.25. Любые альтернативы egrep приветствуются. Обратите внимание, что токены, представляющие интерес (35 и 150), могут измениться, и я уже создаю шаблон egrep в скрипте. Следовательно, один вкладыш (если это возможно) было бы здорово
Thanks для вашего ответа Pax. Я отредактировал вопрос, чтобы лучше описать мою проблему. Решение awk было бы удивительным, за исключением того, что мне не всегда будут нужны 35 и 150. Я уже создаю regex egrep, и генерация всего заявления awk кажется немного грубой силой. – Dave
@Dave, см. Обновление. Сам сценарий не изменяется, поскольку теперь вы просто представляете список интересующих токенов. Единственное, что вам нужно генерировать динамически, это бит '-vLIST ='. – paxdiablo
Спасибо, миллион! – Dave