text-processing – ¿Admite sort ordenar un archivo en el lugar, como `sed –in-place`?

Pregunta:

¿Soy ciego o no hay otra opción como --in-place para sort ?

Para guardar los resultados en el archivo de entrada, sed usa -i ( --in-place ).

Redirigir la salida de sort al archivo de entrada

sort < f > f

resulta en dejarlo vacío. Si no hay --in-place opción en el --in-place , tal vez haya algún truco para hacer esto de manera práctica .

(Lo único que me viene a la mente:

sort < f > /tmp/f$$ ; cat /tmp/f$$ > f ; rm /tmp/f$$

Mover no es la elección correcta, porque los permisos de archivos pueden cambiar. Es por eso que sobrescribo con el contenido del archivo temporal que luego elimino).

Respuesta:

sort tiene la opción -o (o --output ) que toma un nombre de archivo como argumento. El programa escribe los datos en un archivo temporal, luego sobrescribe el archivo de entrada original después de que se completa la clasificación (lo que puede suceder solo después de que se hayan leído todos los datos de entrada). (Esto es esencialmente lo mismo que sed -i ).

Desde la página de información de GNU sort :

    -o OUTPUT-FILE
    --output= OUTPUT-FILE

      Escriba la salida en OUTPUT-FILE en lugar de la salida estándar. Normalmente, sort lee todas las entradas antes de abrir OUTPUT-FILE , por lo que puede ordenar de forma segura un archivo en su lugar utilizando comandos como sort -o F F y cat F | sort -o F Sin embargo, sort con --merge ( -m ) puede abrir el archivo de salida antes de leer toda la entrada, por lo que un comando como cat F | sort -m -o F - G no es seguro, ya que sort podría comenzar a escribir F antes de que cat termine de leerlo.

En los sistemas más nuevos, -o no puede aparecer después de un archivo de entrada si se establece POSIXLY_CORRECT , por ejemplo, sort F -o F Los scripts portátiles deben especificar -o OUTPUT-FILE antes de cualquier archivo de entrada. y de The Open Group Base Especificaciones Edición 7 :

    -o output

      Especifique el nombre de un archivo de salida que se utilizará en lugar de la salida estándar. Este archivo puede ser el mismo que uno de los archivos de entrada.

Ha habido informes de que sort puede descartar (es decir, destruir) algunos o todos sus datos si no tiene espacio en disco o no tiene cuota de disco, o si el sistema se bloquea mientras sort escribe el archivo de salida, o si se produce algún otro error.

En resumen, para ordenar un archivo en su lugar, se puede usar lo siguiente:

sort -o filename filename

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım