Кратък урок по история

Често има любопитни имена в компютърните неща. Може би знаете vi. Там, например, има следната команда:

s/foo/bar/

Това замества първото срещане на foo с bar в текущия ред. Съществува и по-обща версия – g:

g/something/s/foo/bar/

Това замества foo с bar на редовете, които съдържат something. Демек, g приема шаблон и команда, която прилага на всички редове, в които шаблона съвпада. Ето как може да изтриете редовете, съдържащи something:

g/something/d

Тези неща идват от един още по-архаичен текстов редактор – ed. Там има команда p, извеждаща всички редове, в които шаблона съвпада. Но все пак, ето как да изведете всички редове от текущия файл, съдържащи something:

g/something/p

Впрочем, something е регулярен израз – „regular expression“, често съкращавано като „re“. Общия запис на командата е:

g/re/p

И ето откъде идва името на една от най-използваните shell команди в POSIX света.

Забавно, а?

8 thoughts on “Кратък урок по история

  1. Аз пък винаги съм си мислел, че „grep-na“ идва от обезвучаване на „б“-то в българското „гребна“ – взимам си това, което ми трябва.

  2. Трябва да призная – това ме накефи много :) И все пак – grep идва от g/re/p от едитора ed (а не vi), или не съм чел между редовете?

  3. Да, от ed-е. Мислех, че съм го написал ясно. Махнах едно изречение споменаващо vi – би трябвало да премахне объркването.

  4. Хоули фъкинг шит, това ми хареса. С риск да прозвуча като профан – какво означават в този контекст g и p?

  5. get и print? Най-вероятно. Не обяснява защо print взема шаблон, но явно така са решили древните автори на ed. Във всеки случай, на 1 стъпка е било от това да го кръстят REPL :)

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *