[bash] Ignorera rader i txt filer och kombinera dom till output.txt. Vad gör jag för fel?

Permalänk
Medlem

[bash] Ignorera rader i txt filer och kombinera dom till output.txt. Vad gör jag för fel?

Jag har ett antal txt filer jag vill kombinera till en fil. Jag vill att tomma rader ska ignoreras, likaså rader som börjar med %.

För nuvarande har jag.

cat fil1.txt fil2.txt fil3.txt | egrep -v "(^%.*|^$)" > output.txt

Vilket enbart fungerar för den första (eller den andra eftersom den första filen inte innehåller något av det jag vill ignorera).

fil1.txt:

Hörru Glenn, vilken smart anka du har. Jag vet, det är en doktorand.

fil2.txt:

% blabla Vem är den lille pojken med hudsalva i ansiktet? Det är min korte-son.

fil3.txt

% blablabla Glenn var sen. Hysén va han då?

output.txt blir då:

Hörru Glenn, vilken smart anka du har. Jag vet, det är en doktorand. Vem är den lille pojken med hudsalva i ansiktet? Det är min korte-son.% blablabla Glenn var sen. Hysén va han då?

% blablabla
ska inte vara där. Vad gör jag för fel?

Visa signatur
Permalänk
Medlem

Det var ju skumt, här är mitt resultat:
Utan egrep
$ cat fil1.txt fil2.txt fil3.txt
Hörru Glenn, vilken smart anka du har.
Jag vet, det är en doktorand.
% blabla
Vem är den lille pojken med hudsalva i ansiktet?

Det är min korte-son.
% blablabla
Glenn var sen. Hysén va han då?

Med egrep
$ cat fil1.txt fil2.txt fil3.txt | egrep -v "(^%.*|^$)"
Hörru Glenn, vilken smart anka du har.
Jag vet, det är en doktorand.
Vem är den lille pojken med hudsalva i ansiktet?
Det är min korte-son.
Glenn var sen. Hysén va han då?

Permalänk
Medlem

Vild gissning: fil2.txt har inget newline på sista raden, vilket gör att % blablabla i fil tre printas direkt.

Tillägg: Ditt regex säger ju att raden måste börja med % (^ är ju beginning-of-line-ankare).

Visa signatur

Jag är en optimist; det är aldrig så dåligt så att det inte kan bli sämre.

Permalänk
Medlem

@zyberzero: Det var problemet. Tackar.

Visa signatur