L'man
La pagina non mi dà molte speranze, ma spero che sia una funzionalità non documentata (e/o specifica per GNU).
Risposta accettata:
Non puoi. Usa ed o GNU sed o perl, oppure fai quello che fanno dietro le quinte, ovvero creare un nuovo file per i contenuti.
ed
, portatile:
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 nuovo file (consigliato, perché se il tuo script viene interrotto, puoi semplicemente eseguirlo di nuovo):
cut -d , -f 1,3 <foo >foo.new &&
mv -f foo.new foo
cut
, sostituendo il file in atto (mantiene la proprietà e le autorizzazioni di foo
, ma necessita di protezione contro le interruzioni):
cp -f foo foo.old &&
cut -d , -f 1,3 <foo.old >foo &&
rm foo.old
Consiglio di utilizzare uno dei cut
metodi basati. In questo modo non dipendi da nessuno strumento non standard, puoi utilizzare lo strumento migliore per il lavoro e controllare il comportamento in caso di interruzione.