sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #102473
Re: sed regular expression driller mig
On 2012-08-12 08:40, Frank Damgaard wrote:
> On 2012-08-10 13:44, Egon Andersen wrote:
> ....
>>> Eller også så kan du helt glemme \( og \) ved at bruge dette sed udtryk
>>> "s/..den fejlagtige tekst..//"
>
> ....
>>
>> Jeg stopper med at prøve at få 'sed' til at hjælpe mig med problemet.
>> Enten åbner jeg filerne i emacs og retter det manuelt (pyha) eller også skriver jeg et
>> mini program til dette specifikke problem.
>
> prøv AWK, gammelt script program der bygger på regular expressions, og er velegnet
> til opgaver med "tekst-in" og "tekst-ud".
>
....
jeg har muligvis misforstået opgaven, det ville være rart med et lille eksempel....
jeg har så lavet et eksempel udfra så vidt jeg forstår problemet:
input:
======
some tekst
mere \(også tekst\)
igen lidt tekst
og mere \(også tekst\) og \(også tekst\) to match
igen mere \(også 2 tekst\) og \(også 1 tekst\) matcher ikke
sidste linie
awk script:
===========
# se også "man awk" eller "man gawk"
/\\\(.+\\\)/ { # matcher tekst på linie: \(....\)
# gør noget med input linje, f.eks. erstat
# er der kun en forekomst per linie, brug sub(), ellers gsub()
# $0 er input linie, er default, kan undlades.
gsub(/\\\(også tekst\\\)/,"korrekt tekst",$0)
print $0
next
}
{ # ikke match, blot print linie
print
}
output:
======
$ gawk -f a.awk a.lst
some tekst
more korrekt tekst
igen lidt tekst
more korrekt tekst og korrekt tekst
more \(også 2 tekst\) og \(også 1 tekst\)
sidste linie
References