Strona 1 z 1

Wklejanie (zamienianie) wartości jak ctrl+F, ale x5.

: pn gru 03, 2012 6:25 pm
autor: atol
Spodziewam się, że funkcjonalności takiej jak w tytule opisana brak, ale może jest jakieś makro lub dostępny skrypt (np. VBS), który w opcji znajdź i zamień pozwalałby za jednym wklejeniem do okna dialogowego tekstu o kilku wartościach jakoś oddzielonych dla porządku (jak w csv) wpisywać się w kilku miejcach zamianiając kolejno wartości.

Przykład:

1)tekst wklejany do okna dialogowego z poleceniem znajdź i zamień: ARO;MARO;BORO;GROW;ATOM

2)Tekst przed operacją: aaaaaaaaaaaaaaMILO1mmmmmmmmMILO2nnnnnnnnnnnnMILO3vvvvvvvvvvMILO4dddddddddddMILO5

3) w oknie szukane i zamieniane dajemy MILO1;MILO2;MILO3;MILO4;MILO5

4)Tekst po operacji: aaaaaaaaaaaaaaAROmmmmmmmmMAROnnnnnnnnnnnnBOROvvvvvvvvvvGROWdddddddddddATOM

Czyli wszystko za dwoma wklejeniami i jednym kliknięciem zamiast wielokrotnością tych czynności.

Re: Wklejanie (zamienianie) wartości jak ctrl+F, ale x5.

: pn gru 03, 2012 6:51 pm
autor: Jan_J
Wyrażenia regularne.
atol pisze:ARO;MARO;BORO;GROW;ATOM
2)Tekst przed operacją: aaaaaaaaaaaaaaMILO1mmmmmmmmMILO2nnnnnnnnnnnnMILO3vvvvvvvvvvMILO4dddddddddddMILO5
3) w oknie szukane i zamieniane dajemy MILO1;MILO2;MILO3;MILO4;MILO5
4)Tekst po operacji: aaaaaaaaaaaaaaAROmmmmmmmmMAROnnnnnnnnnnnnBOROvvvvvvvvvvGROWdddddddddddATOM
Czyli wszystko za dwoma wklejeniami i jednym kliknięciem zamiast wielokrotnością tych czynności.
tak łatwo nie jest, ale formularz znajdź/zamień użyty następująco:

znajdź: MILO1(.*)MILO2(.*)MILO3(.*)MILO4(.*)MILO5
zamień na: ARO$1MARO$2BORO$3GROW$4ATOM
>> więcej [x] wyrażenia regularne

zrobi właśnie to, o czym piszesz.

Ale uwaga: jest to prastare, ostre narzędzie. Łatwo się skaleczyć, jeżeli się nie uważa. W szczególności trzeba być ostrożnym, kiedy dopasowania mogą się nakładać na siebie.
W aplikacjach KDE (Kate? Kwrite? KWord? nie pamiętam) jest wizualny asystent tworzenia wyrażeń regularnych...

Re: Wklejanie (zamienianie) wartości jak ctrl+F, ale x5.

: czw gru 06, 2012 1:06 am
autor: atol
Mogliśmy się nie zrozumieć; mnie chodziło by zrobiło np. w czymś takim (przy czym w miejsce MILO1, MILO2, itd. byłoby cokolwiek:

<table border="1" cellpadding="4" cellspacing="0" style="width: 100%;">
<colgroup> </colgroup>
<tbody>
<tr>
<td width="100%">
<p><font face="Arial, sans-serif"><font size="2" style="font-size: 10pt;"><strong>MILO1</strong></font></font></p>
<p><font face="Arial, sans-serif"><font size="2" style="font-size: 10pt;"><span style="font-size: 14pt;"><strong>MILO2</strong></span> </font></font></p>
<p><span style="text-decoration: underline;"><font face="Arial, sans-serif"><font size="2" style="font-size: 10pt;">MILO3</font></font></span><font face="Arial, sans-serif"><font size="2" style="font-size: 10pt;"></font></font></p>
<p><font face="Arial, sans-serif"><font size="2" style="font-size: 10pt;">MILO4</font></font></p>MILO5
</td>
</tr>
</tbody>
</table>



Niestety jednak nie robi - nie zamienia wyrażeń. Bo tu nie chodzi o zamienę jednego wyrażenia (hasła - jak to oznajmia się w pracy z oknem dialogowym), ale poniekąd hurtowo kilku wyrażeń, jak napisałem, w różnych miejscach.

Re: Wklejanie (zamienianie) wartości jak ctrl+F, ale x5.

: czw gru 06, 2012 2:05 am
autor: Jan_J
Nawet w czymś takim by się dało, tyle że RE w OpenOffice są ograniczone do pojedynczego akapitu.

Jeżeli myślisz o dłubaniu w kodzie HTML/XML, to niestety, używanie do tego Writera, czy szerzej: edytorów formatujących, mija się z celem. No bo na poziomie kodu nie ma co formatować. Ale w innych przypadkach -- nawet nietrudno by było napisać dialog obsługujący Twój pomysł. Ne wiem, może już ktoś to zrobił, w końcu zamiany to ważna część warsztatu redakcyjnego.

Sprawną zamianę załatwisz niskopoziomowymi narzędziami jak sed albo rpl. Dla Windows np. z zestawu gnuwin32: http://gnuwin32.sourceforge.net/packages/sed.htm oraz http://gnuwin32.sourceforge.net/packages/rpl.htm. Do prostych zamian znaków jest jeszcze tr.

One przeszukują cały plik tekstowy wiersz po wierszu robiąc podstawienia jakie im się zleci. Okropne są: bez interfejsu użytkownika, potokowe. Ale skuteczne.

Jakoś tak by się używało sed-a:
sed -e"s/\bAdam\b/Ewa/g" -e"s/\bAbel\b/Kain/g" plik.we > plik.wy
rpl ma inną składnię, nie pamiętam.

Re: Wklejanie (zamienianie) wartości jak ctrl+F, ale x5.

: czw gru 06, 2012 4:10 pm
autor: atol
Dzięki za odpowiedź. Po mojemu (ale oczywiście jestem mocno "laicki laik") trudno tu specjalnie mówić o majstrowaniu przy kodzie - po prostu pseudo-hurtowe zamień wklej w pliku tekstowym, w którym kod jest zapisany, by nie robić na piechotę. A jak trzeba w praktyce tych wskazanych narzędzi używać? Jeśli nie ma interfejsu to przez co zamieniać wartości zapisane w tekście, i to generalnie krótkim? Są może na to jakieś zalecane (w sensie, że nie zatrudne) tutoriale?

Re: Wklejanie (zamienianie) wartości jak ctrl+F, ale x5.

: czw gru 06, 2012 11:15 pm
autor: Jan_J
Dajmy na to taki sed. Instaluje się gdzieś dajmy na to w "C:\program files\gnuwin32\bin\sed.exe"
Używasz wywołując z wiersza poleceń (cmd, powershell) sed -e"reguła" -e "reguła" plik_we > plik_wy albo sed -f plik_reguł plik_we > plik_wy. Można też oskryptować, tj. napisać plik wsadowy (w Windows: *.cmd) np. w taki sposób, by nasunięcie ikonki pliku_we na plik skryptu automatyczne generowało wynik. Coś w rodzaju robto.cmd o zawartości:

sed -f plik_reguł "%1" > "%1_wynik"

Krótkie wprowadzenie: patrz np. http://pluton.pol.lublin.pl/~wiesiekp/L ... _i_awk.pdf. O sedzie książki całe powstały...

Wbrew pozorom czasami brak interfejsu jest zaletą, bo daje swobodę w sposobie użycia.

PS. Nie chcę “namawiać do złego”. Być może są narzędzia, które robią coś podobnego w sposób równie skuteczny, lecz przyjemniejszy, w jakimś środowisku graficznym.

Re: Wklejanie (zamienianie) wartości jak ctrl+F, ale x5.

: pt gru 07, 2012 1:08 am
autor: atol
Wielkie podziękowania za wspomożenie w potrzebie. Teraz przynajmniej wiem od której strony można to zacząć "gryźć", to i coś może wyjdzie sensownego z edukacji.