Actualmente tengo un montón de archivos .md5sum con un valor hash md5sum y su nombre de archivo correspondiente con la ruta absoluta completa. Me gustaría modificar estos archivos de ruta absoluta a relativa. Creo que lo tengo bastante cerca.
> cat example.md5sum 197f76c53d2918764cfa6463b7221dec /example/path/to/file/example.null > cat example.md5sum | sed 's/( ).*\// \.\//' 197f76c53d2918764cfa6463b7221dec /example/path/to/file/example.null Lanzar la expresión regular ( ).*\/ en el bloc de notas++ devuelve /example/path/to/file/ que es lo que quiero. Moverlo a sed no produce la misma coincidencia.
El objetivo final aquí, como se mencionó anteriormente, es el siguiente:
197f76c53d2918764cfa6463b7221dec ./example.nullParece un trabajo para sed.
sed -i.bak 's:/.*/:./:' file ... La opción -i le dice a sed que modifique los archivos "in situ" en lugar de enviar los resultados a la salida estándar. Con s comando substituir, puede usar delimitadores alternativos; en este caso, he usado dos puntos, ya que el texto que está comparando y usando como reemplazo incluye barras inclinadas. Hace que las cosas sean más fáciles de leer.
No me he molestado en hacer coincidir el espacio en blanco antes de la ruta, porque en un archivo md5sum tiene un formato bastante predecible.
Haga una copia de seguridad de sus archivos de entrada antes de experimentar.
Tenga en cuenta que esto es independiente del shell: puede ejecutarlo en tcsh o bash o cualquier otra cosa que pueda iniciar sed con opciones.