2009-02-11, 18:48
  #1
Medlem
Tjenare
Nu är det som så att jag har har en text (artikel.txt) och den innehåller en tidningsartikel. Nu är det som så att jag skulle vilja kunna lägga till taggar i den m.h.a sed i terminalen, men jag lyckas inte riktigt. Frågar för att jag vill lära mig så hoppas att någon kan hjälpa mig.
Men nu över till beskrivningen då, jag vill som sagt kunna lägga taggar <>,</> runt omkring saker jag vill hitta. Nu är det då som så att jag vill lägga till taggar runt omkring datum. De datum jag vill kunna märka upp är "1890-talet", "1890", "1890 talet", "år 1890". Så om det t.ex. står "under 1890-talet ansökte allt fler om..." så vill jag alltså i texten m.h.a. sed märka upp det såhär: "under <date>1890-talet</date> ansökte allt fler om...". Det borde inte vara så svårt men jag lyckas inte riktigt och hoppas nu på att någon schysst människa här inne kan hjälpa mig
tack på förhand
Citera
2009-02-11, 21:32
  #2
Medlem
Citat:
Ursprungligen postat av mojitoboy
Tjenare
Nu är det som så att jag har har en text (artikel.txt) och den innehåller en tidningsartikel. Nu är det som så att jag skulle vilja kunna lägga till taggar i den m.h.a sed i terminalen, men jag lyckas inte riktigt. Frågar för att jag vill lära mig så hoppas att någon kan hjälpa mig.
Men nu över till beskrivningen då, jag vill som sagt kunna lägga taggar <>,</> runt omkring saker jag vill hitta. Nu är det då som så att jag vill lägga till taggar runt omkring datum. De datum jag vill kunna märka upp är "1890-talet", "1890", "1890 talet", "år 1890". Så om det t.ex. står "under 1890-talet ansökte allt fler om..." så vill jag alltså i texten m.h.a. sed märka upp det såhär: "under <date>1890-talet</date> ansökte allt fler om...". Det borde inte vara så svårt men jag lyckas inte riktigt och hoppas nu på att någon schysst människa här inne kan hjälpa mig
tack på förhand

Kod:
sed -e "s/\(1890-talet\|1890\|år 1890\|1890 talet\)/<date>\1<\/date>/g"

där har du en regexp som kommer att ta dom exempel som du listade upp.
för att lägga till flera söktermer så lägger du dom bara inom \( \) med \| som delimiter.
Citera
2009-02-11, 22:01
  #3
Medlem
Citat:
Ursprungligen postat av _sajko
Kod:
sed -e "s/\(1890-talet\|1890\|år 1890\|1890 talet\)/<date>\1<\/date>/g"

där har du en regexp som kommer att ta dom exempel som du listade upp.
för att lägga till flera söktermer så lägger du dom bara inom \( \) med \| som delimiter.
Får tyvärr ett error :/
Får, Regular Expression Syntax error
Backreference to undefined numbered capturing group 1 om jag kör filen i powergrep...

Kör jag den rakt i terminalen i unix däremot så händer det absolut ingenting. :/
__________________
Senast redigerad av mojitoboy 2009-02-11 kl. 22:09.
Citera
2009-02-11, 22:42
  #4
Medlem
Citat:
Ursprungligen postat av mojitoboy
Får tyvärr ett error :/
Får, Regular Expression Syntax error
Backreference to undefined numbered capturing group 1 om jag kör filen i powergrep...

Kör jag den rakt i terminalen i unix däremot så händer det absolut ingenting. :/

Okey, något du måste förstå är att sed och powergrep antagligen inte hanterar regexps på samma sätt.

att den inte funkar i unix kan också ha med att sed i unix inte behandlar regexps på samma sätt (är inte helt säker på det dock), jag förutsatte att det va linux du körde så den där är testad i linux :<

Kod:
sajko@hanna:~> echo "blah blah år 1890 blah blah 1890-talet" > fil.tmp
sajko@hanna:~> sed -e "s/\(1890-talet\|1890\|år 1890\|1890 talet\)/<date>\1<\/date>/g" fil.tmp
blah blah <date>år 1890</date> blah blah <date>1890-talet</date>
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in