Dnes ty rady mi chodí uplně mimo, tak doplním zadání. Nepomohla ni první rada, nevrací mi to nic, upravil jsem to a zkusil přidat /gi flag nebo ubrat ^a$.
- Charakter grepování vyžaduje volbu -o - když je to jeden řádek přeci :
- Taky ještě doplním/připomenu, že ten skript mi vrátí všechny výskyty (na co výskyt, to řádek) . Takže to |head -n1 řeší, jen je to pomalé.
- Taky jsem hledal elegantní řešení, přímo aktérující na příkazu grep, nějaký jeden switch, než to přepíšu do awk
- Délka jednotlivých segmentů 40kB až 4MB, celková délka vstupu 300MB, ale tím tailem ji "seekuju" ..
Fakt, že vstup je jednořádkový znamená, že nanajvýš může být v jednom souboru. Kdyby byl v nula souborech , tak by nebylo co
vstupovat. Ve skutečnosti je ale vstup z pípy (protože jsou z souboru odstraněny některé znaky jako \n \r a mezery).
Přirozeně,
m mezera 1 nepomohlo.
Bohužel grep v tomhle má krev na rukou, protože volba se jmenuje --max-count, ale až man vysvětluje vysvětluje, že se to týká řádků
Zjednodušený zadání: ale bojím, se , že to bude moc dlouhý, na to jak to ve skutečnosti je jednoduchý
Při každém použití dávám různý parametr prvnímu příkazu tail, jde o append only soubor vstup.txt. Hledaný řetězec začíná MAGIC (shodou okolností na začátku řádku, ještě před
tr) a končí nějakým delimiterem . A rozprostírá se to přes víc řádků, proto ten mezikrok s tr.
tail -n8000 vstup.txt | tr -d "\r\n " |grep -Po "MAGIC[^-]......"vstup
echo ' dfjkfjk skhd ;jkh kjdjfh --- skjdfh sd ;khsdskjfjh ;jh h;kh --- ;kjh --- ;kjh ;kjh ;k ;' |grep -Po ";[^-]+"
Prostě jednoduše: začíná to středníkem slovo a jede se až po první pomlčku. V tomhle vstupu jsou čtyri výsledky(=dá 4 rádky), já chci jen první, -m1 dá identický výstup.
Pozor, středník může být i uvnitř a stejně tak pomlčka může být i mimo zachytávný region a nic neznamenájako mohou použít AWK asi(myslím, že na takovéhle výstřižky určené počátečním a koncovým patternem přímo umí, něco jako toggle a převzal to ruby
|ruby -ne 'print if /StartToken/ ... /Konec/' ), místo grepu, když to grep in-house neumí, doufal jsem ,že když -m1 nefunuje, že je nějaká analogogie jako -n1 když se neoperuje s řádky, ale s výskyty