OT: grep

Jan Pechanec jp at devnull.cz
Fri Jul 27 11:34:50 CEST 2012


On Fri, 27 Jul 2012, Dan Lukes wrote:

>> grep -e '\`' soubor
>>
>> Vyraz se shoduje s jakymkoliv radkem. Podle me by se mel shodovat
>> pouze s radky, ve kterych se vyskytuje alespon jeden znak `.
<...>
>
> Nevim co pro grep znamena escapovany zpetny apostrof. Ma takovou teorii, ze nic
> a protoze nevi co je to za znak, tak ho uplne vynecha. No a prazdnej retezec
> matchne kazdej radek.

	cau Dane, podle me to je chyba. Backslash potlacuje specialni vyznam 
znaku za nim, tady neni co potlacit, takze by tam mel nechat ten zpetny 
apostrof. Podle teorie, co rikas, by mel nasledujici prikaz vypsat vsechno:

	grep '\X' /etc/passwd

	coz se rozhodne nestane a grep najde radky, kde je X, jak by clovek 
ocekaval. Co se divam, tak na Solarisu grep na '\`' proste hleda zpetny 
apostrofy.

	mozna to jsou nejaky historicky duvody BSD implementace, ale podle 
me to je obycejnej bug.

> Coz nelze obema programum vycitat - \` konstrukt je v podstate "chyba" a neda

	ja si nemyslim, ze dany konstrukt je chyba. Kdyz si nejsi jisty, 
jestli nektery znak nema specialni vyznam, tak dej escape. Takhle se chova i 
shell a opet mi to prijde zcela logicky:

$ echo \a
a

	vim, ze nekde to je naopak, v nejakych regularnich vyrazech naopak 
musis dat \( pro grouping, jinak ( reprezentuje normalni zavorku. Ale to mi 
prijde jeste horsi.

	p.

-- 
Jan Pechanec <jp (at) devnull (dot) cz>
http://www.devnull.cz


More information about the Users-l mailing list