/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Lidt tekst conventering?
Fra : none


Dato : 02-02-06 17:15

Jeg har en (rent ud sagt) helvedes masse tekst som består af følgende
skrift form:

Who is the patron saint of Wales*st. david
Who is the Roman goddess of peace*pax
Who is the silhouette on the major league baseball logo*harmon killebrew
Who is the smallest member of the European union*luxembourg
Who is the U S of America named after*amerigo vespucci

Dette vil jeg gerne have conventeret til

st. david:Who is the patron saint of Wales
pax:Who is the Roman goddess of peace
harmon killebrew:Who is the silhouette on the major league baseball logo
luxembourg:Who is the smallest member of the European union
amerigo vespucci:Who is the U S of America named after

Dvs.
tekst1*tekst2 => tekst2:tekst1

Nogen forslag til hvordan dette kan klares en omgang sed eller awk eller
måske en tredje?

 
 
Peter Makholm (02-02-2006)
Kommentar
Fra : Peter Makholm


Dato : 02-02-06 17:30

none <""jesper\"@(none)"> writes:

> Dvs.
> tekst1*tekst2 => tekst2:tekst1
>
> Nogen forslag til hvordan dette kan klares en omgang sed eller awk
> eller måske en tredje?

Du har helt ret i at det kan gøres med awk. Prøv at se på -F hvor du
kan vælge et tegn der automatisk splitter inddatalinjen op efter et
bestemt tegn.

--
Peter Makholm | Sit back and watch the messages. This is actually
peter@makholm.net | more important than one might think as there is a
http://hacking.dk | bug in GNU Mach whereby hitting a key during the
| boot process causes the kernel to panic
| -- GNU Hurd Installation Guide

Claus Rasmussen (02-02-2006)
Kommentar
Fra : Claus Rasmussen


Dato : 02-02-06 17:42

none wrote:

> tekst1*tekst2 => tekst2:tekst1

Med sed:

sed 's/\(.*\)\*\(.*\)/\2:\1/' fil

Perls regulære udtryk er lidt pænere:

perl -pe 's/(.*)\*(.*)/\2:\1/g' fil


Klaus Alexander Seis~ (03-02-2006)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 03-02-06 01:06

None skrev:

> tekst1*tekst2 => tekst2:tekst1
>
> Nogen forslag til hvordan dette kan klares en omgang sed eller
> awk eller måske en tredje?

#!/bin/sh

OLDIFS="${IFS}"
IFS='*
'

while read Q A
do
echo "${A}:${Q}"
done

IFS="${OLDIFS}"

# eof

Mvh,

--
Klaus Alexander Seistrup
Copenhagen, Denmark
http://seistrup.dk/

Ukendt (04-02-2006)
Kommentar
Fra : Ukendt


Dato : 04-02-06 00:19

Klaus Alexander Seistrup wrote:
>
> #!/bin/sh
>
> OLDIFS="${IFS}"
> IFS='*
> '
>
> while read Q A
> do
> echo "${A}:${Q}"
> done
>
> IFS="${OLDIFS}"

Det med at gemme den gamle værdi af IFS er overflødigt i et
script som ovenstående. Man må få samme resultat med:

#!/bin/sh

IFS='*
'

while read Q A
do
echo "${A}:${Q}"
done

--
Kasper Dupont -- Rigtige mænd skriver deres egne backupprogrammer
#define _(_)"d.%.4s%."_"2s" /* This is my new email address */
char*_="@2kaspner"_()"%03"_("4s%.")"t\n";printf(_+11,_+6,_,6,_+2,_+7,_+6);

Klaus Alexander Seis~ (04-02-2006)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 04-02-06 01:04

Kasper Dupont skrev:

> Det med at gemme den gamle værdi af IFS er overflødigt i
> et script som ovenstående. Man må få samme resultat med:

Korrekt. Det var nu osse mest i tilfælde af at man ville udvide
scriptet.

Mvh,

--
Klaus Alexander Seistrup
Copenhagen, Denmark
http://seistrup.dk/

Søg
Reklame
Statistik
Spørgsmål : 177548
Tips : 31968
Nyheder : 719565
Indlæg : 6408803
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste