Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Vlozenie znaku za kazdu X-tu medzeru [VYRIESENE]  (Přečteno 1049 krát)

psychogenius

  • Návštěvník
  • *
  • Příspěvků: 60
    • Zobrazit profil
Vlozenie znaku za kazdu X-tu medzeru [VYRIESENE]
« kdy: 02 Května 2012, 10:21:33 »
Zdravim potreboval by som Vlozit & za kazdu 9-tu medzeru v texte. Skusal som to cez sed :
sed 's/ /\&/9'
to to vlozi spravne ale nejde to nejako neviem dojst na sposob aby to robili kazdu 9 medzeru ked dam"
sed 's/ /\&/9g'
tak to vlozi za 9 medzeru a potom za vsetky ...


Viete mi nejako poradit ?
« Poslední změna: 02 Května 2012, 11:11:41 od psychogenius »

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3133
    • Zobrazit profil
    • GdH-Notes
Re:Vlozenie znaku za kazdu X-tu medzeru
« Odpověď #1 kdy: 02 Května 2012, 11:01:45 »
Třeba takto:

Kód: [Vybrat]
sed 's/\(\([^ ]* \)\{9\}\)/\1\&/g'

psychogenius

  • Návštěvník
  • *
  • Příspěvků: 60
    • Zobrazit profil
Re:Vlozenie znaku za kazdu X-tu medzeru
« Odpověď #2 kdy: 02 Května 2012, 11:11:21 »
Diky funguje to skvelo :D Ked budes mat cas tak by si mi vedel rozpisat ze preco a ako to tak funguje ? 

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3133
    • Zobrazit profil
    • GdH-Notes
Re:Vlozenie znaku za kazdu X-tu medzeru [VYRIESENE]
« Odpověď #3 kdy: 02 Května 2012, 12:40:55 »
'[^ ]* ' odpovídá libovolnému řetězci, který končí mezerou, ale neobsahuje žádnou další. [^ ] znamená jakýkoliv znak, krom mezery - stříška neguje výčet povolených znaků.
Ty vnější kulaté závorky definují subřetězec, který pak mohu použít dále pomocí \1
Vnitřní kulaté závorky obalují výraz, kterému ve složených závorkách definuju počet opakování

S GNU sed (který je v ubuntu) to lze zapsat přehledněji bez těch escape znaků díky přepínači -r:

sed -r 's/(([^ ]* ){9})/\1\&/g'

 


Provoz zaštiťuje spolek OpenAlt.