sed im Detail

31/03/2010 - 23:29 von Thomas Steinbach | Report spam
Hallo,

ich habe da folgendes Problem.
Ich will aus einer Datei die Zeichenfolge ".txt" (ich meine ohne
die Anfuehrungszeichen) durch NICHTS ersetzen, aber nur
dann, wenn in der gleichen Zeile das Wort "Testfall" davor
auftaucht. Meine Idee war nun awk zu involvieren und mit:

awk '/Testfall.*\.txt/" lastfile

bekomme ich ja in in so einem Fall einen Output, falls es
matched. Aber wie verknuepfe ich das nun mit einem
sed, das mir eben nur das in _dieser_ Zeile vorkommende
".txt" herausschneidet? Ein:

sed 's/.txt//' lastfile > newfile

wuerde ja alle ".txt" entfernen. Eben auch die wo Testfall
nicht vorkommt.

Wie kann ich nur das ".txt" mit sed herausschneiden. Eben in
Abhaengigkeit zu einem weiteren Wort in der gleichen Zeile?

Thomas
 

Lesen sie die antworten

#1 Christian Brabandt
31/03/2010 - 23:43 | Warnen spam
On 2010-03-31, Thomas Steinbach wrote:
Hallo,

ich habe da folgendes Problem.
Ich will aus einer Datei die Zeichenfolge ".txt" (ich meine ohne
die Anfuehrungszeichen) durch NICHTS ersetzen, aber nur
dann, wenn in der gleichen Zeile das Wort "Testfall" davor
auftaucht. Meine Idee war nun awk zu involvieren und mit:

awk '/Testfall.*\.txt/" lastfile

bekomme ich ja in in so einem Fall einen Output, falls es
matched. Aber wie verknuepfe ich das nun mit einem
sed, das mir eben nur das in _dieser_ Zeile vorkommende
".txt" herausschneidet? Ein:

sed 's/.txt//' lastfile > newfile

wuerde ja alle ".txt" entfernen. Eben auch die wo Testfall
nicht vorkommt.



So àhnlich wie in awk:
sed '/Testfall.*\.txt/s/\.txt//' < infile

regards,
Christian

Ähnliche fragen