GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hacer `cortar` cambiar un archivo en su lugar?

El man La página no me da muchas esperanzas, pero espero que sea una función no documentada (y/o específica de GNU).

Respuesta aceptada:

no puedes Utilice ed o GNU sed o perl, o haga lo que hacen entre bastidores, que es crear un nuevo archivo para los contenidos.

ed , portátil:

ed foo <<EOF
1,$s/^([^,]*),([^,]*),([^,]*).*/1,3/
w
q
EOF

GNU sed :

sed -i -e 's/^([^,]*),([^,]*),([^,]*).*/1,3/' foo

Perl:

perl -i -l -F, -pae 'print @F[1,3]' foo

cut , creando un nuevo archivo (recomendado, porque si su secuencia de comandos se interrumpe, puede volver a ejecutarla):

cut -d , -f 1,3 <foo >foo.new &&
mv -f foo.new foo

cut , reemplazando el archivo en su lugar (conserva la propiedad y los permisos de foo , pero necesita protección contra interrupciones):

cp -f foo foo.old &&
cut -d , -f 1,3 <foo.old >foo &&
rm foo.old

Recomiendo usar uno de los cut métodos basados ​​en De esa manera, no depende de ninguna herramienta no estándar, puede usar la mejor herramienta para el trabajo y controla el comportamiento en caso de interrupción.


Linux
  1. ¿Qué cuenta como modificación o cambio de archivo?

  2. Cambiar ¿Quién puede cambiar?

  3. ¿Es Rsync ~/foo Target/foo lo mismo que Rsync ~/foo/ Target/foo/?

  4. Cambiar la fecha de creación del archivo

  5. ¿Cómo hacer que el archivo sea disperso?

Comando Chown en Linux (Cambiar la propiedad del archivo)

Cómo hacer un archivo ejecutable en Linux

Cómo cambiar los permisos de archivo

Cambiar los permisos de un archivo

¿Cómo usar chmod para cambiar el permiso del archivo?

Comando make de Linux con ejemplos