
Me gustaría hacer coincidir todas las líneas de un archivo del que mi palabra es un prefijo o la línea es un prefijo de mi palabra. Por ejemplo, la búsqueda de "abc" debería coincidir con:
a
ab
abc
abcd
abcxyz
pero no:
xabc
zzab
xaz
La parte "mi palabra es un prefijo de" es fácil, simplemente haga coincidir " ^abc
", por supuesto, pero no he encontrado una solución para el bit "la línea es un prefijo de mi palabra". Intenté algo en awk pero no pude hacer que el contenido de la línea forme parte de la expresión regular.
Respuesta1
Hay dos casos que debes manejar, donde la línea es más corta que tu cadena de búsqueda o donde es más larga.
Cuando sea más larga, querrás probar si el comienzo de la línea es igual a la cadena de prueba.
Cuando es más corto, querrás probar si el comienzo de la cadena de búsqueda es igual a la línea.
En los casos en que las longitudes sean iguales, cualquiera de los métodos funciona.
awk -v search=abc 'length() > length(search) ? substr($0, 1, length(search)) == search : substr(search, 1, length()) == $0' inputfile