Похоже, у вас есть файл конфигурации. То, что вы могли бы сделать, похоже на то, что Адам Симеон / СЛМ предлагает:
sed -nr 's/[^=]+=\s*(.+)$/\1/p' filename
где [^=]исключает все «=» символы, +говорит один или более одного и того же типа характера, это с последующим фактическим =, \sлюбой пробел (включая вкладки \tи новых линий \n, \r\nи равнинных пространств «», а *значит ноль или более одного и того же типа , круглые скобки определяют, что находится внутри, чтобы поместить совпавшие символьные последовательности в замещающие заполнители \ 1, \ 2, ..., \ n, $означает конец строки. Это следует типичному шаблону замены:. s/.../.../modifiersПараметр командной строки -rобозначает расширенный синтаксис регулярных выражений (для удобства) и -nозначает, что ничего не выводится до или без явного запроса. pМодификатор печатает результат.
Вы можете сделать глобальный поиск с помощью gмодификатора, например:
sed -nr 's/[^=]+=\s*(.+)$/\1 /pg' filename # note the space after \1
так что вы получите строку , разделенную ' '(может быть \n, \tили что там у вас) , которые вы можете обрабатывать легко.
Оба действительны при условии, что вашим значениям предшествует интервал символов уравнения до конца строки, и за ними не следуют комментарии или другие символы с семантикой, отклоняющейся от простого «значения».
Редактировать:
Я пока не могу комментировать посты других. Чтобы указать строку, просто передайте номер строки, в вашем случае 3, до sили перед инициализирующей кавычкой char (как в vim).
sed -nr '3s/[^=]+=\s*(.+)$/\1/p' filename
Пожалуйста, посмотрите на info sed. Например, 3.2 и 4.7 представляют для вас особый интерес.
awkхороша - но только если у вас есть пробелы вокруг=. Это не сработаетPOP3_SERVER_NAME=localhost.