Parece que tienes un archivo de configuración. Lo que podría hacer es similar a lo que sugiere Adam Siemeon / slm:
sed -nr 's/[^=]+=\s*(.+)$/\1/p' filename
donde [^=]
excluye todos los '=' caracteres, +
dice una o más del mismo tipo de carácter, este seguido por un real =
, \s
cualquier espacio en blanco (incluyendo las lengüetas \t
y las nuevas líneas \n
, \r\n
y espacios lisos '', mientras que *
medios de cero o más del mismo tipo , los paréntesis capturan lo que hay dentro para colocar las secuencias de caracteres coincidentes en los marcadores de posición de reemplazo \ 1, \ 2, ..., \ n, $
significa el final de una línea. Esto sigue el patrón de reemplazo típico de:. s/.../.../modifiers
La opción de línea de comando -r
significa sintaxis de expresiones regulares extendida (por conveniencia) y -n
significa que no se genera nada hasta que se solicite explícitamente o no. El p
modificador imprime el resultado.
Puede realizar una búsqueda global con el g
modificador como:
sed -nr 's/[^=]+=\s*(.+)$/\1 /pg' filename # note the space after \1
de manera que se obtiene una cadena separada por ' '
(podría ser \n
, \t
o lo que sea) que se puede procesar fácilmente.
Ambos son válidos siempre que sus valores precedidos por el carácter de la ecuación se extiendan hasta el final de una línea y no sean seguidos por comentarios u otros caracteres cuya semántica se desvíe de un simple "valor".
Editar:
Todavía no puedo comentar aquí sobre las publicaciones de otros. Para indicar la línea, simplemente pase el número de línea, en su caso 3, antes s
o antes del inicio de la cotización (como en vim).
sed -nr '3s/[^=]+=\s*(.+)$/\1/p' filename
Por favor, eche un vistazo info sed
. Por ejemplo, 3.2 y 4.7 son de particular interés para usted.
awk
comando es bueno, pero solo si tienes espacios alrededor del=
. No funcionará paraPOP3_SERVER_NAME=localhost
.awk
de espacios a otra cosa utilizando-F
. Por ejemplo:-F "="
se usará=
como delimitador en el caso que mencione.