Permalänk
Medlem

Sed, hur funkar det?

Jag har inte använt Linux länge och undrar hur sed fungerar.
Jag vill t.ex testa runt genom att byta ut alla a med o och o med a i en textfil. Hur går man till väga?

Permalänk
Medlem

sed -i 's/a/o/g' fil.txt
sed -i 's/o/a/g' fil.txt

Byter ut alla a till o och sen alla o till a, men sed är minst sagt flexibelt så en god idé är nog att googla upp en liten tutorial.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Lunke
sed -i 's/a/o/g' fil.txt
sed -i 's/o/a/g' fil.txt

Resultatet av dett är att fil.txt inte innehåller några o overhuvudtaget!

Permalänk
Medlem
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av GunnarD
Resultatet av dett är att fil.txt inte innehåller några o overhuvudtaget!

Yep, var det inte det karpo menade, eller missförstod jag?

Permalänk
Medlem

något som är viktigt att förstå för att kunna hantera sed är just varför som namnet är stream editor, den ser all text som en ström av tecken.. därmed bytet av mönster1 mot mönster2 och en del andra trick som man kan göra och av samma anledning kan en del annat inte göras..

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av Lunke
Yep, var det inte det karpo menade, eller missförstod jag?

Han ville byta ut alla a mot o OCH vice versa. Dina rader gör att först byts alla a ut mot o, sen byts alla o inklusive de som precis bytts från a tillbaks till a => inga o kvar i filen.

Permalänk
Medlem

Jo jag undrade om det gick att byta a mot o och vice versa. Går detta? Har kollat på den länken som någon postade, men det är inte helt enkelt att förstå när man inte är så insatt.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av phz
Han ville byta ut alla a mot o OCH vice versa. Dina rader gör att först byts alla a ut mot o, sen byts alla o inklusive de som precis bytts från a tillbaks till a => inga o kvar i filen.

jodå jag förstod också att det inte blir några o kvar, vill man ha det är det ju bara att för byta ut de a'n som ska bli o till något temporärt typ _tmp_chr_ (eller dyl. sekvens som inte finns i filen) sen byta ut o till a och _tmp_chr_ till o, men det går säkert att göra snyggare med ett regexp eller mer sed-fu.

sed -i 's/a/_tmp_chr_/g' fil.txt
sed -i 's/o/a/g' fil.txt
sed -i 's/_tmp_chr_/o/g' fil.txt

Permalänk
Medlem

Re: Sed, hur funkar det?

Citat:

Ursprungligen inskrivet av karpo
Jag har inte använt Linux länge och undrar hur sed fungerar.
Jag vill t.ex testa runt genom att byta ut alla a med o och o med a i en textfil. Hur går man till väga?

Jag skulle inte använda sed till det utan tr.

Följande rad läser fil1.txt, ändrar alla a till o och alla o till a och sparar resultatet i fil2.txt

tr "ao" "oa" <fil1.txt >fil2.txt