GNU/Linux >> Linux Esercitazione >  >> Linux

Fare `cut` Cambiare un file in posizione?

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.


Linux
  1. Modifica le autorizzazioni di un file

  2. Come usare chmod per modificare i permessi dei file?

  3. Modifica la data di creazione del file

  4. Salva le modifiche sul posto con awk

  5. Come faccio a rendere un file NON modificabile?

Comando Chown in Linux (Modifica proprietà file)

Come rendere eseguibile un file in Linux

Output del contenuto del file mentre cambiano?

Come modificare le autorizzazioni dei file

Linux make Command con esempi

creare un file di registro