Slik fjerner blanke linjer fra en fil i Perl

Putting blanke linjer i et Perl-skript du oppretter er en enkel ting å gjøre. Det kan være at noe er galt med filen din, eller du bare trykke på Enter-tasten for mange ganger. Uansett hvordan det skjer, vil følgende skript fjerne disse blanke linjer (selv om de inneholder skjulte tegn). Denne korte skriptet ikke bare fjerner tomme linjer, men avgir en Perl fil som er kompakt og klar til bruk.

Bruksanvisning

1 Bruk følgende skript på egen hånd eller legge det til som en del av et større manus. Skriv inn hver linje i følgende trinn etterfulgt av Enter.

2 Åpne fil, "filnavn.typ" eller dø "$ \ n";

Denne linjen åpner filen som har tomme linjer du ønsker å fjerne. The 'eller dø "$! \ N" "kommandoen forteller skriptet at hvis det er en feil å stoppe skriptet og skrive ut feilen.

3 åpne ut, "tempfile $$." eller dø "$ \ n";

Denne linjen oppretter en midlertidig fil for å lagre resultatene.

4 while (<FILE>) {

Denne linjen utgjør starten av løkken som gjør alt arbeidet. Den "mens" kommandoen forteller systemet at så lenge det er en annen linje i filen koden i {og} trenger å bli henrettet.

5 neste hvis / ^ \ s * $ /;

Denne teksten sier å teste linjen som skriptet er for tiden å se på for å se om det bare inneholder white-space tegn, for eksempel en fane eller et mellomrom. Den "/ ^ \ s * $ /" er testen. Hvis det er alt som denne linjen inneholder deretter utføre "neste" kommando som forteller skriptet til å gå tilbake til "while (<FILE>) {" kø for å få neste linje i filen uten at noe blir skrevet til den midlertidige filen .

6 skrive ut, $ _;
}

Siden "neste" kommandoen ikke ble utført, deretter linjen ikke må være tom. Så sender denne linjen informasjonen til å skrive ut til den midlertidige filen. Den "}" er en del av beholderen for løkke som du opprettet ved hjelp av "mens". Når skriptet møter det, vil skriptet gå tilbake til "mens" -kommandoen og prøve å få en annen linje som skal testes. Hvis det ikke er flere linjer i filen, da løkken vil bli avsluttet og scriptet vil gå til neste kommando.

7 Lukk fil; lukke ut;

Etter det ikke er flere linjer som må sjekkes disse to kommandoene nær både den opprinnelige filen, og den midlertidige filen som ble opprettet, noe som betyr at filene ikke lenger kan redigeres.

8 endre navn ( "filnavn.typ", "filename.bak")
eller dø "Feil på nytt navn: $ \ n";

Denne linjen nytt navn til den originale filen til filename.bak slik at den kan holdes hvis det er nødvendig på nytt.

9 endre navn ( "tempfile. $$", "filnavn.typ")
eller dø "Feil på nytt navn: $!";

Denne linjen gir den midlertidige filen du opprettet i navnet på den opprinnelige filen, overskrive den opprinnelige filen med den nye filen.

Den ferdige manus skal se slik ut:

Åpne fil, "filnavn.typ" eller dø "$ \ n";
åpne ut, "tempfile $$." eller dø "$ \ n";
while (<FILE>) {
neste hvis / ^ \ s * $ /;
skrive ut, $ _;
}
Lukk fil; lukke ut;
endre navn ( "filnavn.typ", "filename.bak")
eller dø "Feil på nytt navn: $ \ n";
endre navn ( "tempfile. $$", "filnavn.typ")
eller dø "Feil på nytt navn: $!";

Hint

  • Navnene på filene kan ha baneinformasjon lagt til dem som "/this/is/the/path/filename.ext" Dette er så skriptet ikke må plasseres i samme mappe som filen som skal bearbeides .Hvis noe skjer med den nyopprettede filen bare endre navn på sikkerhetskopifilen fra "filename.bak" til "filnavn.typ" for å gå tilbake til den opprinnelige filen.
  • Vær sikker på at du virkelig trenger å fjerne linjene fra filen. Ellers kan filen bli ubrukelig.