Portál AbcLinuxu, 13. května 2025 17:01

Dotaz: BASH sed/awk

Tombik avatar 24.10.2009 15:17 Tombik | skóre: 12
BASH sed/awk
Přečteno: 584×
Odpovědět | Admin
Dobry den, potrebujem napisat skript ktory zo zadaneho textoveho suboru odstrani urcity string.

Textovy subor je jednoduchy. Moze vypadat nasledovne: "vajce slivovica slanina klobasa slnko koberec"

a ked spustime skript s parametrom "slnko" tak sa dany textovy subor prepise tak ze sa string "slnko" odstrani a ostatne zostanu zachovane. Teda:

Mame zoznam.txt v ktorom je "vajce slivovica slanina klobasa slnko koberec". Teraz spustime skript "./skript slnko" a obsah textoveho suboru zoznam.txt bude "vajce slivovica slanina klobasa koberec".

Samozrejme umiestnenie jednotlivych stringov sa moze casom menit. Podstatne je ako odstranim konkretny string aby sa mi ostatne zachovali?

Za rady vopred dakujem

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Tombik (tazatel))
24.10.2009 15:38 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: BASH sed/awk
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed -e "s/ $1 / /;s/^$1 //;s/ $1\$//;s/^$1\$//" -i zoznam.txt
Předpokládám, že $1 je parametr toho skriptu a neobsahuje lomítko.
I am always ready to learn although I do not always like to be taught. (W. Churchill)
Tombik avatar 24.10.2009 16:08 Tombik | skóre: 12
Rozbalit Rozbalit vše Re: BASH sed/awk
Parada, funguje to diky ;)
Řešení 2× (pht, Tombik (tazatel))
25.10.2009 15:39 Peter
Rozbalit Rozbalit vše Re: BASH sed/awk
sed -e "s/ $1 / /g;s/^$1 //;s/ $1\$//;s/^$1\$//" -i zoznam.txt

... pro pripad vice vyskytu na jednom radku.
kouby avatar 26.10.2009 11:40 kouby | skóre: 27 | blog: init | Praha
Rozbalit Rozbalit vše Re: BASH sed/awk
Nebo alternativa pomocí awk:

cat text | awk '{for(i=0;i<NF;i++)gsub(/slnko */,"",$i);gsub(FS "+",FS);}1'

Řetězec 'slnko' lze vytáhnout jako proměnnou pro awk a tudíž skrip zobecnit.
That's thirty minutes away. I'll be there in ten.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.