Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Žádost o pomoc s VBS skripty (vyhledání>nahrazení, uložení do souboru)

Vse co jsem psal je, co bych pouzil na linuxu, tedy i find. Na Windowsjsem nesahnul uz radu let (mozna vic nez 10?), takze jak to je na nich netusim. Na druhou stranu to, co jsem tu napsal neni nic sloziteho, takze mozna zvladnete sestavit neco podobneho i s pouzitim Windows-only omezeni (nebo ten cygwin):

find -type f -name "*.h" -exec grep "\<\d{3}\>" {}\;|sed "s/.*\(\<\d{3}\>\).*/\1/"|sort -u>tools.txt

find : obecne hleda soubory a adresare
-type f : zajimaji nas pouze soubory
-name "*.h" : ktere konci na .h
-exec : na kazdy soubor spust nasledujici prikaz, {} nahrad za jmeno souboru

grep : obecne vybira radky podle nejakeho vzoru
"\<\d{3}\>" : zacatek slova, presne 3 cislice, konec slova (cili S12000 nevyhovuje, ackoli \d{3} splnuje)
{} : jmeno souboru nalezeneho od findu (treba pokus.h)

\; ukonceni seznamu parametru findu (ano, grep se svymi parametry je sam parametrem, find ho spusti na na kazdy soubor znovu a preda mu jmeno toho souboru misto {} )

| : zretezeni prikazu - vystup predchoziho (tedy radky obsahujici 3cislicova slova, zadne jine radky) predej jako vstup dalsimu prikazu

sed : stream editor (nahrazuje neco necim v textu)
"s/.*\(\<\d{3}\>\).*/\1/" : regularni vyraz, co chceme nahradit cim "s/vzor/nahrada/[parametry]"
s : substitude - nahrad. nasleduje znak, ktery ODDELUJE vzor a nahradu a pripadne parametry
/ : to je ten znak - pouzivame lomitko. Pokud se nam lomitko nelibi, muzeme poucit neco jineho, treba "s@vzor@nahrada@"
: nasleduje vzor:
.* : . je libovolny znak, * predchozi v libovolnem poctu (0..nekonecno) - cili libovolny retezec s libovolnym obsahem
\(neco\) : neco je vec co nas zajima, v nahrade na nej odkazujeme pomoci \1 (u dalsi zavorky \2, \3 a tak dal)
\<\d{3}\> : neco je 3cislicove slovo (viz grep)
.* : nasleduje zase libovolny retezec
/ : oddelovac stejny jako byl za tim "s" na zacatku - nasleduje nahrada
\1 : z celeho radku nas zajima jen to v zavorce (3cislicove slovo), nic vic nechceme
/ : opet oddelovac - nasleduji volitelne parametry (zadne nepotrebujeme, zadne tedy nezadavame)

| : zretezeni prikazu - sed dostava zajimave radky, z nej padaji uz jen ty trojcisli

sort : tridici program na vystup vypise setrideny (po radcich) vstup
-u : --unique vypisuje pouze unikatni vzorky, je-li vic stejnych vypise prvni, ostatni preskoci

> : presmerovani vystupu do souboru (sort vypisuje kyzeny vysledek, my ho nekam ulozime)
tools.txt : jmeno souboru (do ktereho to vypisujeme)

Jak je videt, neni to zadna magie, jen pouziti naprosto beznych nastroju, ktere ma snad kazda linuxova distribuce, zpusobem, pro ktery jsou urceny. Pri prepisovani pro Windows muzou nastat nejruznejsi problemy (nejsou prislusne programy, nektere retezce se pokusi interpretovat primo samy Windows a tak podobne, ale v principu by to melo jit nejak udelat. Cygwin odstranuje prave vetsinu techto problemu, i kdyz je to ponekud s kanonem na vrabce, tak jeho naroky jsou male.)

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny