Вы находитесь на странице: 1из 7

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ


САНКТ-ПЕТЕРБУРГСКИЙ НАЦИОНАЛЬНЫЙ
ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ
ТЕХНОЛОГИЙ, МЕХАНИКИ И ОПТИКИ

Факультет программной инженерии и компьютерной техники


Кафедра вычислительной техники

Лабораторная работа №4
ПО ДИСЦИПЛИНЕ «Системное программное обеспечение»
Команда grep

Выполнил: Есаков К.И.


Группа: P3200
Преподаватель: Дергачев А. М.

Санкт-Петербург
2018
Задание #1 (файл datebook):

1. Вывести все строки, содержащие строку Sun

grep 'Sun' datebook

2. Вывести все строки, где имена людей начинаются с J

grep '^J' datebook

3. Вывести все строки, заканчивающиеся на 700

grep '700$' datebook

4. Вывести все строки, которые не содержат 834

grep -v '834' datebook

5. Вывести все строки, с днем рождения в декабре

grep ':12/[0-9]' datebook

6. Вывести все строки с телефонными номерами, начинающимися с 408

grep '[a-z]:408-' datebook

7. Вывести все строки, содержащие следующую последовательность символов: заглавную букву,


четыре строчные буквы, запятую, пробел и одну заглавную букву

grep '[A-Z][a-z]\{4\}, [A-Z]' datebook

8. Вывести все строки, в которых фамилия начинается с K или k

grep ' [kK][a-z]*:' datebook

9. Вывести все строки с их порядковыми номерами, где последнее числовое поле записи состоит из
шести цифр

grep -n '[0-9]\{6\}$' datebook

10. Вывести все строки, содержащие слова Lincoln или lincoln

grep '[lL]incoln' datebook

Задание #2 (файл db)


• grep '\<Tom\>' db

При выполнении команды grep '\<Tom\>' db интерпретатор запускает утилиту grep передавая в качестве
аргументов строки \<Tom\> и db соответственно. Утилита grep распознает аргументы и ищет в файле db
строки, совпадающие со словом Tom. Статус выполнения команды можно определить, проанализировав
код завершения утилиты grep, который сохраняется в переменной окружения $?

Вывод команды: Tom Savage:(408) 926-3456:250:168:200

• grep 'Tom Savage' db


При выполнении команды grep 'Tom Savage' db интерпретатор запускает утилиту grep передавая в качестве
аргументов строки Tom Savage и db соответственно. Утилита grep распознает аргументы и ищет в файле db
строки, совпадающие с последовательностью Tom Savage. Статус выполнения команды можно определить,
проанализировав код завершения утилиты grep, который сохраняется в переменной окружения $?

Вывод команды: Tom Savage:(408) 926-3456:250:168:200


• grep '^Tommy' db

При выполнении команды grep '^Tommy' db интерпретатор запускает утилиту grep передавая в качестве
аргументов строки ^Tommy и db соответственно. Утилита grep распознает аргументы и ищет в файле db
строки, совпадающие с последовательностью Tommy в начале строки. Статус выполнения команды можно
определить, проанализировав код завершения утилиты grep, который сохраняется в переменной окружения
$?

Вывод пустой=> Строк не найдено. Код возврата 1

• grep '\.bak$' db

При выполнении команды grep '\bak$’ db интерпретатор запускает утилиту grep передавая в качестве
аргументов строки \bak$ и db соответственно. Утилита grep распознает аргументы и ищет в файле db строки,
совпадающие с последовательностью .bak в конце строки. Статус выполнения команды можно определить,
проанализировав код завершения утилиты grep, который сохраняется в переменной окружения $?

Вывод пустой=> Строк не найдено. Код возврата 1


• grep '[Pp]yramid' *

При выполнении команды grep '[Pp]yramid' * интерпретатор запускает утилиту grep передавая в качестве
аргументов строки [Pp]yramid и * соответственно. Утилита grep распознает аргументы и ищет во всех файлах
текущей директории (/usr/local/regexp), строки совпадающие с последовательностью Pyramid или pyramid .
Статус выполнения команды можно определить, проанализировав код завершения утилиты grep, который
сохраняется в переменной окружения $?

Вывод команды:
datebook:Jonathan DeLoach:408-253-3122:123 Pyramid St., San Jose,CA 04086:7/25/53:85100
datebook:Sir Lancelot:837-835-8257:474 pyramid Boulevard, Bath, WY 28356:5/13/69:24500

• grep '[A-Z]' db

При выполнении команды grep '[A-Z]' db интерпретатор запускает утилиту grep передавая в качестве
аргументов строки [A-Z] и db соответственно. Утилита grep распознает аргументы и ищет в файле db строки,
совпадающие с одной заглавной буквой. Статус выполнения команды можно определить, проанализировав
код завершения утилиты grep, который сохраняется в переменной окружения $?

Был выведен весь файл, т.к. в каждой строке была заглавная буква.

• grep '[0-9]' db

При выполнении команды grep '[A-Z]' db интерпретатор запускает утилиту grep передавая в качестве
аргументов строки [0-9] и db соответственно. Утилита grep распознает аргументы и ищет в файле db строки,
совпадающие с одной цифрой. Статус выполнения команды можно определить, проанализировав код
завершения утилиты grep, который сохраняется в переменной окружения $?

Был выведен весь файл, т.к. в каждой строке была цифра.

• grep '[A-Z]...[0-9]' db
При выполнении команды grep '[A-Z]...[0-9]' db интерпретатор запускает утилиту grep передавая в качестве
аргументов строки [A-Z]...[0-9] и db соответственно. Утилита grep распознает аргументы и ищет в файле db
строки, совпадающие с последовательностю: Заглавная буква, 3 любых символа, цифра. Статус выполнения
команды можно определить, проанализировав код завершения утилиты grep, который сохраняется в
переменной окружения $?

Вывод пустой=> Строк не найдено=> Код возврата 1

• grep -w '[tT]est' db

При выполнении команды grep -w '[tT]est' db интерпретатор запускает утилиту grep с ключом -w передавая в
качестве аргументов строки [tT]est и db соответственно. Утилита grep распознает аргументы и ищет в файле
db строки, в которых есть слово test или Test. Ключ -w означает, что grep ищет выражение как слово, как если
бы оно было окружено метасимволами \< и \>. Статус выполнения команды можно определить,
проанализировав код завершения утилиты grep, который сохраняется в переменной окружения $?

Вывод пустой=> Строк не найдено.Код возврата 1

• grep -s 'Mark Todd' db

При выполнении команды grep -s 'Mark Todd' db интерпретатор запускает утилиту grep с ключом -s
передавая в качестве аргументов строки Mark Todd и db соответственно. Утилита grep распознает аргументы
и ищет в файле db строки, в которых есть последовательность Mark Todd. Ключ -s означает, что grep
подавляет выдачу сообщений о не существующих или недоступных для чтения файлах. Статус выполнения
команды можно определить, проанализировав код завершения утилиты grep, который сохраняется в
переменной окружения $?

Вывод пустой=> Строк не найдено. Код возврата 1

• grep -v 'Mary' db

При выполнении команды grep -v 'Mary' db интерпретатор запускает утилиту grep с ключом -v передавая в
качестве аргументов строки Mary и db соответственно. Утилита grep распознает аргументы и ищет в файле
db строки, в которых отсутствует последовательность Mary. Статус выполнения команды можно определить,
проанализировав код завершения утилиты grep, который сохраняется в переменной окружения $?

Вывод весь файл, кроме строк содержащих Mary.

• grep -i 'sam' db

При выполнении команды grep -i 'sam' db интерпретатор запускает утилиту grep с ключом -i передавая в
качестве аргументов строки sam и db соответственно. Утилита grep распознает аргументы и ищет в файле db
строки, в которых есть последовательность sam. Ключ -i – игнорирование регистра символов. Статус
выполнения команды можно определить, проанализировав код завершения утилиты grep, который
сохраняется в переменной окружения $?
Вывод пустой=> Строк не найдено. Код возврата 1

• grep -l 'Dear Boss' *

При выполнении команды grep 'Dear Boss' * интерпретатор запускает утилиту grep с ключом -l передавая в
качестве аргументов строки Dear Boss и * соответственно. Утилита grep распознает аргументы и ищет во всех
файлах строки, в которых есть последовательность Dear Boss и выводит только имена файлов, которые
удовлетворяют условию поиска. Статус выполнения команды можно определить, проанализировав код
завершения утилиты grep, который сохраняется в переменной окружения $?
Вывод пустой=> Строк не найдено. Код возврата 1
• grep -n 'Tom' db

При выполнении команды grep -n 'Tom' db интерпретатор запускает утилиту grep с ключом -n передавая в
качестве аргументов строки Tom и db соответственно. Утилита grep распознает аргументы и ищет в файле db
строки, в которых есть последовательность Tom. Ключ – n – вывод строк с их номерами. Статус выполнения
команды можно определить, проанализировав код завершения утилиты grep, который сохраняется в
переменной окружения $?
Вывод команды: 11:Tom Savage:(408) 926-3456:250:168:200
• grep "$name" db

При выполнении команды grep "$name" db интерпретатор запускает утилиту grep, передавая в качестве
аргументов содержимое переменной $name и строку db соответственно. Утилита grep распознает аргументы
и ищет в файле db строки, в которых есть последовательность, указанная в переменной $name. Статус
выполнения команды можно определить, проанализировав код завершения утилиты grep, который
сохраняется в переменной окружения $?
Переменной name не существует => ненулевой код возврата
• grep '$5' db

При выполнении команды grep '$5' db интерпретатор запускает утилиту grep, передавая в качестве
аргументов строки $5 и db соответственно. Утилита grep распознает аргументы и ищет в файле db строки, в
которых есть последовательность $5. Статус выполнения команды можно определить, проанализировав код
завершения утилиты grep, который сохраняется в переменной окружения $?
Вывод пустой=> Строк не найдено. Код возврата 1

• ps -ef| grep '^ *user1'

При выполнении команды ps -ef| grep '^ *user1' интерпретатор запускает утилиту ps с ключами ef (вывод
полного списска), затем передает поток вывода ps на поток ввода утилите grep. Утилита grep распознает
аргументы и ищет во входном потоке строки, у которых в начале строки есть любое количество пробелов, а
затем последовательность user1. Статус выполнения команды можно определить, проанализировав код
завершения утилиты grep, который сохраняется в переменной окружения $?
Вывод пустой=> Строк не найдено. Код возврата 1

• egrep '^ +' db

При выполнении команды egrep '^ +' db интерпретатор запускает утилиту egrep, передавая в качестве
аргументов строки ^ + и db соответственно. Утилита egrep распознает аргументы и ищет в файле db строки, в
которых в начале строки есть один и более пробел. Статус выполнения команды можно определить,
проанализировав код завершения утилиты egrep, который сохраняется в переменной окружения $?
Вывод пустой=> Строк не найдено. Код возврата 1

• egrep '^ *' db

При выполнении команды egrep '^ *' db интерпретатор запускает утилиту egrep, передавая в качестве
аргументов строки ^ * и db соответственно. Утилита egrep распознает аргументы и ищет в файле db строки, в
которых в начале строки есть любое количество пробелов. Статус выполнения команды можно определить,
проанализировав код завершения утилиты egrep, который сохраняется в переменной окружения $?
Вывод команды: полностью файл
• egrep '(Tom|Dan) Savage' db

При выполнении команды egrep '(Tom|Dan) Savage' db интерпретатор запускает утилиту egrep, передавая в
качестве аргументов строки (Tom|Dan) Savage и db соответственно. Утилита egrep распознает аргументы и
ищет в файле db строки, в которых есть последовательность Tom Savage или Dan Savage. Статус выполнения
команды можно определить, проанализировав код завершения утилиты egrep, который сохраняется в
переменной окружения $?
Вывод команды:
Dan Savage:(406) 298-7744:450:300:275
Tom Savage:(408) 926-3456:250:168:200
• egrep '(ab)+' db

При выполнении команды egrep '(ab)+' db интерпретатор запускает утилиту egrep, передавая в качестве
аргументов строки (ab)+ и db соответственно. Утилита egrep распознает аргументы и ищет в файле db строки,
в которых последовательность ab встречается 1 и более раз. Статус выполнения команды можно
определить, проанализировав код завершения утилиты egrep, который сохраняется в переменной
окружения $?
Вывод команды:
Elizabeth Stachelin:(916) 440-1763:175:75:300
• egrep '^X[0-9]?' db

При выполнении команды egrep '^X[0-9]?' db интерпретатор запускает утилиту egrep, передавая в качестве
аргументов строки ^X[0-9]? и db соответственно. Утилита egrep распознает аргументы и ищет в файле db
строки, в которых в начале строки есть заглавная Х и ровно одна цифра. Статус выполнения команды можно
определить, проанализировав код завершения утилиты egrep, который сохраняется в переменной
окружения $?
Вывод пустой=> Строк не найдено. Код возврата 1

• egrep 'fun\.$' *

При выполнении команды egrep 'fun\.$' * интерпретатор запускает утилиту egrep, передавая в качестве
аргументов строки fun\.$ и db соответственно. Утилита egrep распознает аргументы и ищет во всех файлах
директории /usr/local/regexp строки, которые заканчиваются на fun. . Статус выполнения команды можно
определить, проанализировав код завершения утилиты egrep, который сохраняется в переменной
окружения $?
Вывод пустой=> Строк не найдено. Код возврата 1

• egrep '[A-Z]+' db

При выполнении команды egrep '[A-Z]+' db интерпретатор запускает утилиту egrep, передавая в качестве
аргументов строки [A-Z]+ и db соответственно. Утилита egrep распознает аргументы и ищет в файле db
строки, в которых есть одна и более заглавная буква. Статус выполнения команды можно определить,
проанализировав код завершения утилиты egrep, который сохраняется в переменной окружения $?
Вывод весь файл, т.к. везде в каждой строчке есть заглавная буква.
• egrep '[0-9]' db

При выполнении команды egrep '[0-9]' db интерпретатор запускает утилиту egrep, передавая в качестве
аргументов строки [0-9] и db соответственно. Утилита egrep распознает аргументы и ищет в файле db строки,
в которых есть цифра. Статус выполнения команды можно определить, проанализировав код завершения
утилиты egrep, который сохраняется в переменной окружения $?

Был выведен весь файл, т.к. в каждой строке была цифра.

• egrep '[A-Z]...[0-9]' db

При выполнении команды egrep '[A-Z]...[0-9]' db интерпретатор запускает утилиту egrep, передавая в
качестве аргументов строки [A-Z]...[0-9] и db соответственно. Утилита egrep распознает аргументы и ищет в
файле db строки, в которых есть последовательность: заглавная буква, 3 любых символа и цифра. Статус
выполнения команды можно определить, проанализировав код завершения утилиты egrep, который
сохраняется в переменной окружения $?
Вывод пустой=> Строк не найдено. Код возврата 1

• egrep '[tT]est' db

При выполнении команды egrep '[tT]est' db интерпретатор запускает утилиту egrep, передавая в качестве
аргументов строки [tT]est и db соответственно. Утилита egrep распознает аргументы и ищет в файле db
строки, в которых есть последовательность test или Test. Статус выполнения команды можно определить,
проанализировав код завершения утилиты egrep, который сохраняется в переменной окружения $?
Вывод пустой=> Строк не найдено. Код возврата 1

• egrep '(Susan|Jean) Doe' db

При выполнении команды egrep '(Susan|Jean) Doe' db интерпретатор запускает утилиту egrep, передавая в
качестве аргументов строки (Susan|Jean) Doe и db соответственно. Утилита egrep распознает аргументы и
ищет в файле db строки, в которых есть последовательность Susan Doe или Jean Doe. Статус выполнения
команды можно определить, проанализировав код завершения утилиты egrep, который сохраняется в
переменной окружения $?
Вывод пустой=> Строк не найдено. Код возврата 1

• egrep -v 'Mary' db

При выполнении команды egrep -v 'Mary' db интерпретатор запускает утилиту egrep с ключом -v, передавая в
качестве аргументов строки Mary и db соответственно. Утилита egrep распознает аргументы и ищет в файле
db строки, в которых нет последовательности Mary. Статус выполнения команды можно определить,
проанализировав код завершения утилиты egrep, который сохраняется в переменной окружения $?
Будет выведен весь файл, т.к. ни в одной строке не было последовательности ‘Mary’
• egrep -i 'sam' db

При выполнении команды egrep -i 'sam' db интерпретатор запускает утилиту grep с ключом -i передавая в
качестве аргументов строки sam и db соответственно. Утилита egrep распознает аргументы и ищет в файле
db строки, в которых есть последовательность sam, Ключи -i – игнорирование регистра символов. Статус
выполнения команды можно определить, проанализировав код завершения утилиты egrep, который
сохраняется в переменной окружения $?
• egrep -l 'Dear Boss' *

При выполнении команды egrep 'Dear Boss' * интерпретатор запускает утилиту egrep с ключом -l передавая в
качестве аргументов строки Dear Boss и * соответственно. Утилита egrep распознает аргументы и ищет во
всех файлах строки, в которых есть последовательность Dear Boss и выводит только имена файлов, которые
удовлетворяют условию поиска. Статус выполнения команды можно определить, проанализировав код
завершения утилиты egrep, который сохраняется в переменной окружения $?
Вывод пустой=> Строк не найдено. Код возврата 1

• egrep -n 'Tom' db

При выполнении команды egrep -n 'Tom' db интерпретатор запускает утилиту egrep с ключом -n передавая в
качестве аргументов строки Tom и db соответственно. Утилита grep распознает аргументы и ищет в файле db
строки, в которых есть последовательность Tom. Ключ – n – вывод строк с их номерами. Статус выполнения
команды можно определить, проанализировав код завершения утилиты grep, который сохраняется в
переменной окружения $?
Вывод команды: 11:Tom Savage:(408) 926-3456:250:168:200
• egrep -s "$name" db

При выполнении команды egrep -s "$name" db интерпретатор запускает утилиту egrep с ключом -s передавая
в качестве аргументов содержимое переменной $name и db соответственно. Утилита egrep распознает
аргументы и ищет в файле db строки, в которых есть последовательность, заданная в переменной $name.
Ключ -s означает, что grep подавляет выдачу сообщений о не существующих или недоступных для чтения
файлах. Статус выполнения команды можно определить, проанализировав код завершения утилиты egrep,
который сохраняется в переменной окружения $?
Переменной name не существует => ненулевой код возврата