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?

Visa signatur

"When i was a kid i had an imaginary friend and i used to think that he went everywhere with me.
And that i could talk to him, and he could hear me, and that he could grant me wishes and stuff.
Then i grew up, and i stopped going to church." - Jimmy Carr

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.

Visa signatur

Hur man installerar program i *nix | There is no Swedish conspiracy

these days you can't use the Web at 2400 baud because the ads are 24KB - Bill Joy

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!

Visa signatur

Kriga mot min brute: http://gunnard.se.mybrute.com om du vågar :D

Permalänk
Medlem
Visa signatur

"Stallman to Dvorak: Welcome to freedom, your rulebook is in the mail" - Fake Steve Jobs
rfc-1925 - The Twelve Networking Truths

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?

Visa signatur

Hur man installerar program i *nix | There is no Swedish conspiracy

these days you can't use the Web at 2400 baud because the ads are 24KB - Bill Joy

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..

Visa signatur

"Stallman to Dvorak: Welcome to freedom, your rulebook is in the mail" - Fake Steve Jobs
rfc-1925 - The Twelve Networking Truths

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.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

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.

Visa signatur

"When i was a kid i had an imaginary friend and i used to think that he went everywhere with me.
And that i could talk to him, and he could hear me, and that he could grant me wishes and stuff.
Then i grew up, and i stopped going to church." - Jimmy Carr

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

Visa signatur

Hur man installerar program i *nix | There is no Swedish conspiracy

these days you can't use the Web at 2400 baud because the ads are 24KB - Bill Joy

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

Visa signatur

Kriga mot min brute: http://gunnard.se.mybrute.com om du vågar :D