Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#26  2021-11-01 17:43:23

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Poprawa plików tekstowych

Tam w nawiasie kwadratowym bazowo nie ma żadnego tekstu, a jedynie trzeba go tam wpisać.

Ten twój sed nie uzupełnia tych nawiasów — wygląda jakby nie było żadnego dopasowania.

Popytałem trochę na stackoverflow i tam podsuneli mi takiego sed'a:

Kod:

sed 's#\([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\)#\1\3\2#g'

Co daje bardzo pożądany efekt,

Kod:

echo '| ![](/img/2016/12/020.jakis-tam-text1.png#medium) | ![](/img/2016/12/021.jakis-tam-text2.png#medium) | ![](/img/2016/12/022.jakis-tam-text3.png#medium) |' | sed 's#\([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\)#\1\3\2#g'
| ![jakis-tam-text1](/img/2016/12/020.jakis-tam-text1.png#medium) | ![jakis-tam-text2](/img/2016/12/021.jakis-tam-text2.png#medium) | ![jakis-tam-text3](/img/2016/12/022.jakis-tam-text3.png#medium) |

choć muszę jeszcze ustalić jak to zapuścić jedynie na linijkach, które zaczynają się od | ![] , bo wygląda, że trochę przepisuje za dużo. xD

Offline

 

#27  2021-11-01 18:00:46

  numer_inaczej - Użytkownik

numer_inaczej
Użytkownik
Zarejestrowany: 2014-08-15

Re: Poprawa plików tekstowych

cieszy mnie to, że udało Ci się rozwiązać problem.

Offline

 

#28  2021-11-01 18:14:13

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Poprawa plików tekstowych

Problem dalej jest nierozwiązany. xD

Bo o ile tamten sed działa to trzeba go będzie przerobić.

Do tej pory używałem np. takiego polecenia:

Kod:

egrep -ir "^\!\[\]\(" post/ | \
cut -d: -f 1 | \
sort -u | \
xargs sed -i 's@^!\[.*\](\(\(.*\)\.\(.*\)\.\(.*\)\))@![\3](\1)@g'

I tutaj w sed jest ^ zaraz za @ i to robiło dopasowanie tylko do tych konkretnych linijek.

Ale w przypadku  tego sed 's#\([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\)#\1\3\2#g' , tak łatwo się nie da. xD

Offline

 

#29  2021-11-01 19:03:57

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Poprawa plików tekstowych

Póbuję rozwikłać ten cały zapis \([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\) ale coś mi to nie idzie. xD

To polecenie:

Kod:

sed 's#\([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\)#\1\3\2#g''

bez problemu działa z

Kod:

| ![](/img/2016/12/020.jakis-tam-text1.png#medium) | ![](/img/2016/12/021.jakis-tam-text2.png#medium) | ![](/img/2016/12/022.jakis-tam-text3.png#medium) |
| ![](/img/2016/12/020.jakis-tam-text1.png#medium) | ![](/img/2016/12/021.jakis-tam-text2.png#medium) |
| ![](/img/2016/12/020.jakis-tam-text1.png#medium) |

Czyli ten sed sobie poradzi bez względu na to ile takich fraz będzie.

Dla uproszczenia spróbowałem z tą pojedynczą frazą, tj.

Kod:

| ![](/img/2016/12/020.jakis-tam-text1.png#medium) |

No i wyszło:

Kod:

sed 's#\([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\)#\1\3\2#g'

| ![jakis-tam-text1] ![](/img/2016/12/020.jakis-tam-text1.png#medium) |

Ale jak zacząłem sprawdzać co tam się kryje pod tymi \1 \2 \3 , to wychodzi coś takiego:

Kod:

sed 's#\([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\)#\1#g'
| ![ |

sed 's#\([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\)#\2#g'
](/img/2016/12/020.jakis-tam-text1.png#medium) |

sed 's#\([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\)#\3#g'
jakis-tam-text1 |

I się tak zastanawiam czemu tak dziwnie to dopasowuje.

Może dałbyś radę wyjaśnić co \([^[]*.\)\([^\.]*.\([^\.]*\)[^)]*.\) dokładnie robi? xD

Offline

 

#30  2021-11-02 23:23:55

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: Poprawa plików tekstowych

Ok udało się. xD

Zgodnie z tym wyjaśnieniem, wyszedł taki sed:

Kod:

sed '/^|[[:space:]]!\[](/s#\(|[[:space:]]!\[\)\(]([^().]*\.\([^|.]*\)\.[^()]*)\)#\1\3\2#g'

No i on już złapał te linijki które były potrzebne.

Potem w oparciu o tamto wytłumaczenie zrobiłem jeszcze takiego sed'a, który łapał linijki z myślnikami zamiast z kropkami:

Kod:

sed '/^|[[:space:]]!\[](/s#\(|[[:space:]]!\[\)\(]([^()-]*\-\([^|.]*\)\.[^()]*)\)#\1\3\2#g'

I w końcu udało się przerobić wszystkie linijki tak jak być powinny. xD

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)