
Tengo cadenas de direcciones a las que (debido a una programación inicial deficiente) se les permitió demasiada entrada de texto libre. Mientras limpiaba este desorden heredado, me di cuenta de que al final de los campos de dirección, frecuentemente (y frecuentemente no) hay comas de las que quiero deshacerme.
El problema es que (¡nuevamente, con frecuencia!) aquellos que ingresan los datos (pagados por línea...) ingresan cadenas como:
`address_1_string , `
Esa es dirección_1_cadena seguida de dos espacios seguidos de la coma que deseo eliminar, seguido de dos espacios más. El número de espacios (antes o después de la coma) es arbitrario y normalmente va de 0 a 5. El problema se complica aún más por el hecho de que address_string_1
puede tener comas internas (válidas).
Entonces, lo que estoy buscando es una expresión regular que vaya hasta el final de la línea, elimine los espacios finales, la primera coma y luego los espacios adicionales hasta que sea válido [a-zA-Z0-9] ([:alphanum: ]?) se encuentra el carácter.
Tengo nociones de expresiones regulares, pero esto está por encima de mi nivel salarial. Esta es mi primera publicación en Stackexchange, así que si estoy en el lugar equivocado, rediríjame. TIA.
Respuesta1
< input sed 's/[[:space:],]*$//' > output
Eliminaría todos los espacios y comas al final de la línea.
Para editar el archivo en su lugar, algunas sed
implementaciones tienen una -i
opción inspirada en la opción perl
de -i
:
sed -i 's/[[:space:],]*$//' input-and-output # GNU, busybox, NetBSD, OpenBSD
sed -i '' 's/[[:space:],]*$//' input-and-output # FreeBSD, macOS