Są tu jakieś mózgi od GREPa? Albo jest coś spaprane albo to zwyczajnie nie działa.
Z danego tekstu 11 [nazwa miesiąca] 2022 potrzebuję wyszukać " 2022" - czyli rok z poprzedzającą spacją. Muszę użyć dodatniego wybiegania wstecz (Positive lookbehind). Czyli wyszukuję

(?<=\d\s\l+)\s\d{4}
I nie wyszukuje niczego. Problem tkwi w powtórzeniu, gdy za \l zamiast "+" dopiszę "{4}" to bez problemu znajdzie te daty w których występuje słowo maja. Jest jakiś sposób
Jak w #grep znaleźć tekst pomiędzy znakami '<' i '>', np: < tutaj długi tekst > ?

Próbowałem (<)(.+)(>) ale kłopot pojawia się gdy mam np:
< tutaj długi tekst > długi tekst 2 >
i wtedy zaznacza ten szerszy zakres a mnie interesuje węższy.

#regex #indesign
@scorpio18k: Jak po „+” albo „*” dasz znak zapytania to te operatory stają się „leniwe”, tj. próbują zmatchowac minimalną liczbę znaków. W innym wypadku są zachłanne - #!$%@?ą w opór.

Regex101 z reszta ładnie to tłumaczy:

1st Capturing Group (.+?)

. matches any character (except for line terminators)
+? matches the previous token between one and unlimited times, as few times as possible, expanding as needed (lazy)
  • Odpowiedz
@jagodowy_krol: @Saly: @Hauleth: Bardzo ważne że mówimy o Adobe Indesign, @Saly już raz zwrócił mi uwage, że ktoś to upośledzony nazywał :D.

@Saly niestety nie łapie to poprawnie, boldują się również same nawiasy gdzie są cyfry. Dziękuję za fajną stronę! :D

@Hauleth Dzięki za uświadomienie rozróżnienia! Kod niestety nie działa w związku z tym że do Adobe, a ja jestem zbyt nierozgarnięty by go teraz naprawić, niemniej bardzo dziękuję!
  • Odpowiedz
@suicide_is_painless: chcesz dostac tylko liczby? Najlepiej grep -oP '\d+'. Znaczenie flag: -P - uzyl perlowych regexow, zawsze tego uzywam, bo rozne narzedzia lubia miec swoje dialekty, -o - wypisz mi tylko to co sie #!$%@? z regexem, a nie cala linie
  • Odpowiedz
@suicide_is_painless: ok, szkoda, że ktoś użył skrótu grep nie wiedząc co on znaczy. Co do twojego problemu to chyba możesz tak (?<=lorem)\d+ , ten regex powinien zlapac ci tylko liczbe gdy jest przed nią "lorem", ale sam lorem się nie wlicza
  • Odpowiedz
Mirki, jaki regex za pierwszym przejściem wyrzuci mi wszystkie spacje rozdzielające myślniki pomiędzy cyframi?
Przykładowe wejście:

1 - 1 - 1
1-1 - 1
a - 1 - 1
a - 1 - a

Przykładowe wyjście:

1-1-1
1-1-1
a - 1-1
a - 1 - a

Próbowałem: '([0-9]) ?- ?([0-9])' --> '\1-\2', ale to nie działa, bo "środkowa" jedynka jest "zużyta" przy pierwszym zmatchowaniu, więc pozostawia spacje wokół drugiego myślnika nietknięte.
@asster: Przy okazji polecam też od razu pouczyć się awk'a, będziesz wtedy tworzyć wspaniałe onelinery typu:

$ ps aux | grep -i [b]ash | awk '{print $2}' | xargs kill -9
  • Odpowiedz
Mirki mam problem.
Jak za pomocą #grep wyciągnąć "globalnie" fragment tekstu
mam np. p.txt który zawiera

Linia 1
Linia2
linia3
cos tam cos tam
jakies znaczki
123
sss
ddd

chciałbym wyciągnąć wszystko od "linia3" do "123"

próbowałem cat p.txt | grep -i 'linia3.*123' ale nic nie oddaje ( ͡° ʖ̯ ͡°)

#pytanie #pytaniedoeksperta #linux