Textblock bei Leerzeile abschneiden

27/10/2010 - 11:28 von Florian Lindner | Report spam
Hallo,

ich will aus einem Text (generiert von command) einen bestimmten Block
extrahieren. Der Block ist oben durch einen eindeutigen Text und unten
durch eine Leerzeile begrenzt. Er ist auf jeden Fall kleiner als 100
Zeilen, deshalb das -A 100. Ich probiere es mit:

command | grep "start text" -A 100 | head -n `grep ^$ -m 1 -n | sed
s/://`

Was ich komisch finde: Wenn ich das letzte Kommando so modfiziere,
dass head einen Fehler ausgibt, z.B. sed s/:/A/ sagt head:

head: 38A: invalid number of lines

und wenn ich nun `...` durch 38 ersetze, dann stimmt die Ausgabe. So
wie oben steht, stimmt es aber nicht, der Text wird viel zu spàt
abgeschnitten.

Bin natürlich auch für eine komplett andere Herangehensweise offen.

Shell ist tcsh.

Danke,

Florian
 

Lesen sie die antworten

#1 Rud1ger Sch1erz
27/10/2010 - 12:08 | Warnen spam
Florian Lindner writes:

ich will aus einem Text (generiert von command) einen bestimmten Block
extrahieren. Der Block ist oben durch einen eindeutigen Text und unten
durch eine Leerzeile begrenzt. Er ist auf jeden Fall kleiner als 100
Zeilen, deshalb das -A 100. Ich probiere es mit:


[...]
Bin natürlich auch für eine komplett andere Herangehensweise offen.



Ich würde das mit Bourne (oder Derivat) so machen:

while read line && test "$line" != "eindeutigen Text"
do
:
done
n=0
while test $n -lt 100 && read line && test -n "$line"
do
echo "$n"": $line"
let n=n+1
done

Shell ist tcsh.



Axo. Ups, wer macht den sowas? Kenn ich mich nicht aus. Musst du halt
von Bourne nach tom's csh transponieren.

Cheers,
Rudiger

Ähnliche fragen