Come rimuovere le righe vuote da un file in Perl

April 9

Mettere righe vuote in uno script Perl che si sta creando è una cosa facile da fare. Può essere che qualcosa non va con il file o semplicemente colpito il tasto Invio troppe volte. Non importa quanto accade, il seguente script rimuoverà queste righe vuote (anche se contengono caratteri nascosti). Questo breve script non solo rimuove righe vuote, ma produce un file Perl che è compatto e pronto per l'uso.

istruzione

1 Utilizzare il seguente script da solo o aggiungerla come parte di uno script più grande. Digitare ogni riga nei seguenti passaggi seguiti dal tasto Invio.

2 FILE aperto, "filename.ext" or die "$! \ N";

Questa linea si apre il file che ha le righe vuote che si desidera rimuovere. Il 'or die "$! \ N"' comando dice allo script che, se c'è un errore per fermare lo script e stampare l'errore.

3 aprire OUT, "tempfile $$." or die "$! \ n";

Questa linea crea un file temporaneo per memorizzare i risultati.

4 while (<file>) {

Questa linea crea l'inizio del ciclo che fa tutto il lavoro. Il "mentre" il comando dice al sistema che finché c'è un'altra riga nel file il codice all'interno del {} e deve essere eseguito.

5 successiva se / ^ \ s * $ /;

Questo testo dice di testare la linea che lo script è attualmente esaminando per vedere se contiene solo spazi vuoti, come una scheda o uno spazio. Il "/ ^ \ s * $ /" è il test. Se questo è tutto quello che questa riga contiene quindi eseguire il comando "prossimo", che dice allo script di tornare al "while (<file>) {" linea per ottenere la riga successiva nel file senza nulla viene scritto nel file temporaneo .

6 Stampate, $ _;
}

Dal momento che il comando "prossimo" non è stato eseguito, quindi la linea non deve essere vuoto. Quindi, questa linea invia le informazioni per stampare il file temporaneo. Il "}" fa parte del contenitore per il ciclo che si è creato utilizzando "po '". Quando lo script la incontra, lo script tornerà al comando ", mentre" e cercare di ottenere un'altra linea da testare. Se non ci sono più righe nel file, allora il ciclo viene abbandonato e lo script andrà al comando successivo.

7 vicino FILE; chiudere;

Dopo non ci sono più linee che devono essere controllati questi due comandi vicino sia il file originale e il file temporaneo che è stato creato, il che significa che i file non possono più essere modificati.

8 rinominare ( "filename.ext", "nomefile.bak")
o morire "Errore in rename: $! \ n";

Questa linea rinomina il file originale per nomefile.bak in modo che possa essere mantenuto se è necessario di nuovo.

9 rinominare ( "tempfile. $$", "filename.ext")
o morire "Errore nella rinomina: $!";

Questa linea rinomina il file temporaneo che si è creato al nome del file originale, sovrascrivendo il file originale con il nuovo file.

Lo script completato dovrebbe essere simile a questo:

FILE aperto, "filename.ext" or die "$! \ N";
aprire OUT, "tempfile $$." or die "$! \ n";
while (<file>) {
successiva se / ^ \ s * $ /;
Stampate, $ _;
}
vicino FILE; chiudere;
rinominare ( "filename.ext", "nomefile.bak")
o morire "Errore in rename: $! \ n";
rinominare ( "tempfile. $$", "filename.ext")
o morire "Errore nella rinomina: $!";

Consigli e avvertenze

  • I nomi dei file possono avere informazioni sul percorso aggiunto a loro come "/this/is/the/path/filename.ext" Questo è così lo script non deve essere collocato nella stessa cartella del file da lavorare .Se succede qualcosa al file appena creato è sufficiente rinominare il file di backup da "nomefile.bak" a "filename.ext" per ripristinare il file originale.
  • Essere sicuri che si ha realmente bisogno di rimuovere le righe dal file. In caso contrario, il file può diventare inutile.