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: rozdělení řádku podle slova v BASHi [vyřešeno]  (Přečteno 2334 krát)

deathfish

  • Aktivní člen
  • *
  • Příspěvků: 65
rozdělení řádku podle slova v BASHi [vyřešeno]
« kdy: 24 Února 2014, 15:11:09 »
Prosím, jak rozdělit textový řádek podle konkrétního slova, respektive odentrovat jeden řádek do více řádků začínajícív zadaným výrazem?
Příklad (dělící výraz 1111)
text:  aaaaa1111bbbbb1111cccccc1111dsdsdsds1111ghghgh

výsledek:
1111bbbbb
1111cccccc
1111dsdsdsds
1111ghghgh
« Poslední změna: 25 Února 2014, 09:28:37 od Petr Merlin Vaněček »

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:rozdělení řádku podle slova v BASHi
« Odpověď #1 kdy: 24 Února 2014, 15:25:38 »
Kód: [Vybrat]
> echo aaaaa1111bbbbb1111cccccc1111dsdsdsds1111ghghgh | sed 's/\([1]\+\)/\n\1/g'
aaaaa
1111bbbbb
1111cccccc
1111dsdsdsds
1111ghghgh

aka:

s/// - substituce alias nahrad
() - dej do cache, na druhe strane prikazu vrat pomoci \1
\([1]\+\) - vyber po sobe jdouci rady jednicek
\n je novej radek
s///g - delej vsechny vyskyty na radku, ne jen to prvni - tedy "g" na konci

a nebo hezky "ciste" perlem:

Kód: [Vybrat]
> echo aaaaa1111bbbbb1111cccccc1111dsdsdsds1111ghghgh | perl -ne 'my @foo = split /1+/, $_; print join("\n1111", @foo)'
aaaaa
1111bbbbb
1111cccccc
1111dsdsdsds
1111ghghgh
« Poslední změna: 24 Února 2014, 15:32:04 od ntz_reloaded »
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

GdH

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 3176
    • GdH-Notes
Re:rozdělení řádku podle slova v BASHi
« Odpověď #2 kdy: 24 Února 2014, 19:27:32 »
a nebo hezky "ciste" perlem:
Kód: [Vybrat]
> echo aaaaa1111bbbbb1111cccccc1111dsdsdsds1111ghghgh | perl -ne 'my @foo = split /1+/, $_; print join("\n1111", @foo)'
aaaaa
1111bbbbb
1111cccccc
1111dsdsdsds
1111ghghgh

To "čistě" je už na první pohled podezřelé... Tohle se mi líbí víc:

Kód: [Vybrat]
perl -ne 'print s/(1111)/\n\1/rg';)

Já se kvůli tobě na ten Perl nakonec i naučim..
« Poslední změna: 24 Února 2014, 19:47:36 od GdH »

deathfish

  • Aktivní člen
  • *
  • Příspěvků: 65
Re:rozdělení řádku podle slova v BASHi
« Odpověď #3 kdy: 25 Února 2014, 09:19:04 »
více by mi vyhovoval ten sed (super vysvětlení) jelikož se snažím matlat v Bashi, ale nebere mi výraz který obsahuje zanaky např. = - "

proto jsem použil tento perl
Citace
perl -ne 'print s/(1111)/\n\1/rg'

Díky  ;)

 

Provoz zaštiťuje spolek OpenAlt.