Necesito agregar etiquetas PHP que rodean un archivo. Es fácil agregarlos usando
find . -exec echo "?>" >> '{}' \;
pero, ¿cómo puedo anteponer la etiqueta <?php?
text-processing
sed
Gilles 'SO- deja de ser malvado'
fuente
fuente

sed, y permite agregar un sufijo de respaldo.-ino es portátil, la sintaxis difiere entre implementaciones y rompe enlaces simbólicos. Sería mejor usar una aplicación que esté diseñada para editar archivos.Podrías usar un
AWKfiltro como este,awk '{if (NR == 1) printf "% s% s", "PREFIJO", $ 0; sino imprimir $ 0} 'testfile> newfile¿Dónde
PREFIXestá tu cadena de prefijo php?fuente
Todavía no puedo dejar un comentario, pero hacerlo todo en un solo paso:
fuente
Puedes hacer eso con un perl one-liner:
Las
-0777fuerzas de archivos sorber modo, por lo que todo el archivo se leen como una sola línea.-ppermite el bucle.-ipermite la edición en el lugar del archivo.^indica el comienzo de una línea.Actualización: como se indica en los comentarios, puede optar por generar automáticamente una copia de seguridad utilizando en
-i.baklugar de-i. Esto proporciona seguridad adicional en caso de errores en su comando. El argumento a se-iconvierte en el sufijo de la copia de seguridad.Al actualizar un montón de archivos, puede ejecutar el comando con
-i.backup${RANDOM}, verificar que todos los archivos se hayan actualizado correctamente y luego eliminar todos los archivos con esa extensión.fuente
-ibandera sin sufijo, advierta a los lectores que esto significa que no obtendrá copia de seguridad . Para algunos caracteres más (-i.bak), obtendrá una copia de seguridad en caso de que su línea única incluya un error tipográfico. Un error tipográfico bastante simple (digamos, olvidando la-pbandera) puede arruinar su día entero de lo contrario.sedes para editar transmisiones: un archivo no es una transmisión. Utilice un programa destinado a este fin, comoedoex. La-iopciónsedno solo no es portátil, sino que también romperá cualquier enlace simbólico que pueda encontrar, ya que esencialmente lo elimina y lo recrea, lo cual no tiene sentido.fuente
edpara ese propósito, muéstrelo en su respuesta.Una alternativa a lo que escribió para agregar algo al final de cada archivo en el directorio (en
bash):aunque me gusta tu
findone-liner :)fuente
$FNAMEdebería ser$fname: por convención, capitalizamos las variables de entorno (PAGER, EDITOR, SHELL, ...) y las variables internas de shell (BASH_VERSION, RANDOM, ...). Todos los demás nombres de variables deben contener al menos una letra minúscula. Esta convención evita anular accidentalmente variables ambientales e internas.Hay una manera simple
fuente