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.