sed range

Programovacie jazyky, rady, poradňa...
martintv
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 108
Registrovaný: 01 feb 2011, 19:59

sed range

Príspevok od používateľa martintv »

zdar

potrebujem odstranit ";" z kazdeho riadku: napriklad mam

asdasdasd;asdasd;asdasd;bbb;bbb;bbb;bbb;

a potrebujem odstranit od 2. ";" az do 5. zeby ostalo :->

asdasdasd;asdasd;asdasd bbb bbb bbb;bbb;

skusal som >

Kód: Vybrať všetko

sed 's/;/ /6g' input.txt > output.txt
ale nemozem tam dostat ten range, skusal som aj hladat no nic, nejake napady? da sa to vobec?
ChallengerQo
Expert
Expert
Používateľov profilový obrázok
Príspevky: 183
Registrovaný: 05 júl 2009, 17:08
Bydlisko: Kodaň

Re: sed range

Príspevok od používateľa ChallengerQo »

Sed vie spracovať aj range, ale tuším iba podľa počtu riadkov (napr od 5 - 25 riadku), alebo od patternov (napr od #!/bin/bash po prvé "}"). Ak chceš niečo pokročilejšie, tak by som siahol po awk. Napríklad toto:

Kód: Vybrať všetko

echo "asdasdasd;asdasd;asdasd;bbb;bbb;bbb;bbb;" | awk -F\; '{
   for(i=1;i<NF;i++)
       if(i>2&&i<6)
           {printf $i " "}  
       else 
           {printf $i ";"}
}' 
vypíše to, čo chceš.
Napísať odpoveď