Come cancellare il testo in un file?

59

Come cancellare il testo esistente in un file di testo senza aprirlo?

Voglio dire ad esempio che ho un file come hello.txt con alcuni dati di testo in esso & amp; come posso cancellare il testo totale in quel file senza aprirlo.

    
posta rɑːdʒɑ 13.12.2013 - 11:05

9 risposte

113

Apri il tuo terminale con CTRL + ALT + T e scrivi come

 > hello.txt

è tutto, i tuoi dati in quel file verranno cancellati senza nemmeno aprirlo.

Esempio:

    
risposta data Ten-Coin 13.12.2013 - 11:06
25

Il modo più semplice per troncare un file è reindirizzare l'output del comando no-shell della shell ( : ) al file che si desidera cancellare.

: > hello.txt
    
risposta data eradman 15.11.2015 - 02:43
12

Userò anche il reindirizzamento come la risposta di rajagenupula. Ma c'è un po 'più di flessibilità. Apri un terminale e digita

cat > hello.txt

E premi Ctrl + C . Cancellerà il file precedente. Se vuoi fino a questo, va bene.

Se desideri, puoi fare qualcosa di più dopo aver cancellato il file. In questo modo non solo puoi cancellare un file senza aprirlo ma anche scrivere poche righe con una formattazione corretta nel file. Supponiamo che tu voglia scrivere "Ubuntu è il miglior sistema operativo" dopo aver cancellato il file, basta fare

cat > hello.txt
Ubuntu is the 
best OS

Quindi premi Ctrl + C . Ora il file precedente viene cancellato. Allo stesso tempo le parole sono presenti in due righe mentre le inserisco.

Vedi l'esempio:

    
risposta data souravc 13.12.2013 - 11:20
9

Devo farlo sempre con i file di registro. Il modo più semplice che ho trovato è con il seguente comando:

cat /dev/null > hello.txt

Questo elimina il contenuto del file, e ti lascia con un file vuoto senza doverlo aprire in un editor, selezionare il testo, una qualsiasi di quelle cose. Più in particolare quello che fa è sostituire il contenuto del file con il contenuto di "/ dev / null", o nulla. In effetti è piuttosto lucido.

L'unica avvertenza è che l'utente al quale sei attualmente connesso deve avere il permesso di scrittura su detto file.

    
risposta data Don Briggs 13.12.2013 - 18:15
5

Se un file è stato creato con il nome hello.txt ed è stato fornito con alcuni testi, il comando seguente nel terminale ctrl + alt + t rimuoverà tutto il testo nel file hello.txt ,

echo "" > hello.txt

    
risposta data Avinash Raj 13.12.2013 - 11:20
3

Un altro approccio: cp /dev/null al file

xieerqi:$ cat testFile.txt                                                                                        
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/sda1      115247656 83100492  26269816  76% /
none                   4        0         4   0% /sys/fs/cgroup
udev             2914492        4   2914488   1% /dev
tmpfs             585216     1152    584064   1% /run
none                5120        0      5120   0% /run/lock
none             2926072    98096   2827976   4% /run/shm
none              102400       76    102324   1% /run/user

xieerqi:$ cp /dev/null testFile.txt                                                                               

xieerqi:$ cat testFile.txt

xieerqi:$ 
    
risposta data Sergiy Kolodyazhnyy 15.11.2015 - 02:53
1

Non è la risposta più breve ma ...

Questa risposta è basata su un altro da Super User . Sebbene non sia il comando bash più breve, truncate è il più leggibile per i principianti medi:

$ echo Hello > Hello.txt
$ echo World! >> Hello.txt
$ cat Hello.txt
Hello
World!
$ truncate -s 0 Hello.txt
$ ll Hello.txt
-rw-rw-r-- 1 rick rick 0 Mar 20 17:32 Hello.txt

Parametri usati con il comando truncate qui:

  • "- s" imposta la dimensione
  • la dimensione "0" sarà zero

Cancella tutto tranne i primi 10.000 byte

Un vantaggio di truncate è che puoi specificare quanto tenere, non solo zero:

$ truncate -s 10000 Hello.txt

... troncherà tutto dopo i primi 10.000 byte. Questo potrebbe essere utile se un programma è diventato pazzo e ha scaricato molti megabyte di dati in un piccolo file di registro:

  • Esegui il comando truncate per una dimensione normale più grande ragionevole di 10K
  • Apri il file con il tuo editor di testo e premi Fine
  • Evidenzia e PgUp per eliminare i byte rimanenti che non appartengono (generalmente riconoscibili dai caratteri garbage ASCII).
risposta data WinEunuuchs2Unix 21.03.2018 - 00:39
0

Quindi, vedo un sacco di reindirizzamenti utilizzati per rispondere a questo;)

Un approccio leggermente diverso con la combo: rm & amp; toccare

rm hello.txt && touch hello.txt

( yeah ... ancora un altro cheat! )

Quindi con questo comando combo il file hello.txt non è stato aperto e alla fine hai ancora il file hello.txt al suo posto con i contenuti cancellati. Proprio come volevi!

    
risposta data precise 27.12.2013 - 20:33
0
vi filename -c ':1,$d' -c ':wq'

ha funzionato al meglio per me a causa della particolare autorizzazione che aveva

    
risposta data Daniel 20.03.2018 - 22:39

Leggi altre domande sui tag