Portál AbcLinuxu, 25. dubna 2024 18:31


Dotaz: skript na dlouhe radky

18.5.2003 21:38 Jubbi | skóre: 4
skript na dlouhe radky
Přečteno: 81×
Odpovědět | Admin
cau nevite jak jednoduse napsat skript ktery by roskouskoval dlouhy radek skladajici se ze samych: NNNN N NNNN N NNNN N kde N je cislo tak ze by za kazdy NNNN N vlozil Enter ? to znamena ze vysledkem by byl soubor ktery by mel na kazdem radku NNNN N. premyslel sem o edu ale nevim jak zkombinovat prikazovy rezim s tim vkladacim diky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.5.2003 22:34 Beda
Rozbalit Rozbalit vše skript na dlouhe radky
Odpovědět | | Sbalit | Link | Blokovat | Admin

stacilo by:?
tr [:space:] '\n' < ./fajl
pripadne trubkou zleva?

18.5.2003 22:46 Beda
Rozbalit Rozbalit vše skript na dlouhe radky

jo a teda jeste predtim tu X=mezera v ...NNNNXNxnnnnxn... nahradit za znak ktery v tom souboru urcite neni? treba:
sed -e 's/\([0-9]\{2,\}\)[[:space:]]\+\([0-9]\)\([^0-9]\)/\1X\2 \3/g | tr [:space:] '\n' | tr X ' '
he? muze byt?

18.5.2003 22:48 Beda
Rozbalit Rozbalit vše skript na dlouhe radky
plus jeste poznamka... posledni vyskyt to mozna rozbije, protoze ten regex ma kontrolu na nasledujici znak za tim jednocislem, takze rucne doeditovat
18.5.2003 23:35 Jubbi | skóre: 4
Rozbalit Rozbalit vše skript na dlouhe radky
mno s mensima upravama to jede ale prijde mi to podivne vyreseny ;)...a nejak jenom pres sed ci ed by to neslo ? neco ve smyslu: sed -n 's/\([1-9]\{4\}\ [1-9]\)/\1"new line"/pg' file nevim jak prave udelat ten new line
19.5.2003 08:42 Ritchie | skóre: 27 | blog: Ritchie's | Berlin
Rozbalit Rozbalit vše skript na dlouhe radky

Také nevím, resp. nikde jsem nanašel, jak do řetězce v sedu vkládát netisknutelné znaky v ascii kódu. Docela by mě to zajímalo, nevíte to někdo?

Jako workaround se nabízí substituce v sedu místo s newline nějakým znakem v souboru nepoužitým a pak
| tr '<znak>' '\n'

19.5.2003 09:51 Jubbi | skóre: 4
Rozbalit Rozbalit vše skript na dlouhe radky
no ja myslim ze neco podbneho uz psal Beda ne ? ;) jde ale o to ze me to moc nepomuze protoze jak rikam sou tam i jine radky ne jen tyhle ktere se maji zmenit a ty by se timhle zpusobem zmenily taky coz je nezadouci
19.5.2003 09:56 Jubbi | skóre: 4
Rozbalit Rozbalit vše skript na dlouhe radky
mno ale..nejaka funkce v nejakem editoru nebo primo nejaka samostatna utilitka prece musi umet to ze to proleze vstup ci soubor a vytiskne vsechny vyrazy odpovidajici zadanemu regularnimu vyrazu ne ? tim by se vsechno vyresilo
19.5.2003 00:01 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše skript na dlouhe radky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Není mi moc jasné, jestli ty NNNN jsou konstatní počty znaků nebo proměnné (máš tam vžycky čtyři), ale pokud konstatní, tak je zdaleka nejjednodušší fmt -w něco (něco == 5 nebo tak).
19.5.2003 00:50 Jubbi | skóre: 4
Rozbalit Rozbalit vše skript na dlouhe radky
diky o fmt sem nevedel...buhezel ale me nepomuze protoze ten soubor obsahuje krome techto radek ktere se maji rozkouskovat i radky jine ktere by fmt rozkouskoval taktez. Tudiz ja nejvrve musim najit ty spravne radky ktere se maji rozkouskovat a ty pak teprve rozkouskovat takze se to zrejme musi udelat pres regularni vyrazy. Problem by mi vyresilo kdybych vedel jak rict sedu aby substituoval "new line" (viz. vys) a nebo jeste lip...kdybych vedel jak tisknout vysledek regularniho vyrazu. Kdyz sedu ci edu reknu aby nasel regularni vyraz tak on mi vrati radek ktery tento regexp obsahuje. Ale kdyby slo nekde pomoci neceho aby se tiskly primo vyrazy ktere vyhovely regexpu(a ne radky ve kterych tento vyraz je) tak by byl problem vyresen a docela by mi to pomohlo i v jinych vecech ne jen v teto. NEvite nekdo jestli to nejak dE ?
19.5.2003 09:59 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše skript na dlouhe radky
Věci, které matchne regulární výraz, se nejsnáz vypíšou grep -o. Pokud se to matchne na řádku vícekrát, vypíše to všechny výskyty, což je asi to, co chceš. Bacha, GNU grep to umí až od v2.5, takže gerontofilové (např. debianisti s Woodym a grepem 2.4.2) option -o nemají.
19.5.2003 10:07 Jubbi | skóre: 4
Rozbalit Rozbalit vše skript na dlouhe radky
bomba! diky to je uplne presne ono uz to jede krasne :) diky hlavne za to uporozorneni uz vim proc sem to predtim nemohl najit ;) woody a grep 2.4.2 byl totiz presne muj pripad ;)
19.5.2003 12:01 mlz
Rozbalit Rozbalit vše skript na dlouhe radky
Netusim jak v sedu (myslim, ze ma &) ale v perlu:
my $pat=$ARGV[0];
$pat=qr/$pat/ # prekompilace, problemy s dir/
while()  # pro vsechny radky
 {
 while(/$pat/) # Jeste se matchuje ?
# Mate vice vyrazu, ne jen jeden, proto while
  {
   my $ptou=$&;  # To, co se matchuje, $$& je  
# Read-only VAR
# Ted v $ptou je MATCH, delejte si s nim co chcete
# print $ptou . "\n"; Vam to odradkuje   
   $_=$';   # $_ se porovna s $pat,ale
            # $' obsahuje zbytek retezce po MATCH  
  } 
 }
Asi se zapotite hledanim REGEXu, Vas pripad je
/\d{4}\s+\d\D/
, ale potom mate na konci neciselny znak. Ve vnitrnim cyklu
$ptou=~s/\D$//;
mlz-plz at post dot cz
19.5.2003 12:33 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše skript na dlouhe radky
V GNU sedu 4.x by to šlo úplně snadno, to už je takový malý zakuklený perl ;) ale šlo by to i v ,,obyčejném`` sedu. Algebraické řešení v perlu (mírně špinavé, ale ne zas tak moc): perl -nle 's/.*?(\d{4}\s\d\b)?/\1\n/g; s/\n+/\n/g; s/^\n|\n$//g; print if $_' logičtější je samozřejmě perl -ple 's/.*?(\d{4}\s\d\b)?/\1\n/g' soubor | grep . ale používá se grep.
19.5.2003 13:53 Jubbi | skóre: 4
Rozbalit Rozbalit vše skript na dlouhe radky
muzu vedet jak by to teda slo v sedu ? v perlu se neorientuju zatim
19.5.2003 14:48 Jubbi | skóre: 4
Rozbalit Rozbalit vše skript na dlouhe radky
uz dobry precetel sem si cos ted Yeti odpovidal na ten dostaz o skriptu na hromadnou editaci a uz to mam. Nejenom ze GNU sed 4.x umi substitouvat "new line" (proste pomoci \n) ale ma i pro me dost uzitecny parametr -i super :) njn asi bych mel zacit hromadne upgradovat ;)

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.