Дополнительные базовые команды для работы с текстовыми файлами

Вы уже познакомились с несколькими базовыми командами оболочки, работающими с текстовыми файлами. Здесь приведены еще несколько.

Команда head

Вы можете воспользоваться командой head если вам нужно взглянуть только на начало файла. Команда выглядит так:

head <filename>

Команда Head может быть полезна, но так как она показывает только первых несколько строк, вы не узнаете насколько велик сам файл. По умолчанию, вы можете просмотреть первых десять строк файла, хотя вы можете изменить это число, выполнив следующую команду:

head -20 <filename>

Команда tail

Обратное head действие выполняет tail. С помощью tail вы можете просмотреть последние десять строк файла.

Команда grep

Команда grep используется для поиска в файле заданных текстовых строк. Например, если вы хотите найти все упоминания слова "coffee" в файле sneakers.txt, выполните:

grep coffee sneakers.txt

Вы увидите все строки этого файла, в которых нашлось слово "coffee".

ПодсказкаНе забывайте о регистре
 

Если не указано обратное, grep ищет с учётом регистра. Это означает что поиск Coffee отличается от поиска coffee. Среди множества параметров grep есть -i, который указывает, что поиск должен выполняться без учёта регистра символов. Прочитайте страницу man по grep man чтобы узнать больше об этой команде.

Перенаправление ввода/вывода и каналы

Вы можете использовать каналы и перенаправление вывода когда хотите сохранить и/или напечатать информацию для последующего использования.

Например, вы можете воспользоваться командой grep чтобы найти в файле требуемый текст, а затем сохранить результат в файле или отправить его на принтер.

Чтобы напечатать информацию, например, касающуюся слова "coffee" в файле sneakers.txt, введите:

grep coffee sneakers.txt | lpr

Знаки подстановки и регулярные выражения

Как быть если вы забыли имя файла, который вам нужен? Воспользовавшись знаками подстановки или регулярными выражениями, вы можете выполнять с файлом или файлами действия, не зная его(их) полного имени. Просто введите всё что знаете, и замените остальное знаком *.

ПодсказкаДополнительная информация о знаках подстановки и регулярных выражениях
 

Чтобы узнать больше о знаках подстановки и регулярных выражениях, обратитесь к странице руководства, посвященной bash (man bash). Вспомните о том, что вы можете сохранить полученную информацию в текстовом файле, выполнив команду man bash | col -b > bash.txt. Затем вы можете открыть и прочитать файл с помощью less или pico (pico bash.txt). Если вы хотите распечатать файл, будьте осторожны, он довольно большой.

Зная, что файл называется "sneak____.txt," просто введите:

ls sneak*.txt

и вот полное имя файла:

sneakers.txt

Скорее всего при поиске вы чаще будете использовать знак умножения (*). При поиске с этим знаком найдется всё, соответствующее заданному шаблону. Даже выполнив:

ls *.txt

или:

ls sn*

Вы найдёте файл sneakers.txt и все остальные, имена которых начинаются с "sn". Это позволяет максимально расширить область поиска.

Одним из способов уменьшения области поиска, является использование знака вопроса (?). Также как знак умножения, ? помогает находить файл, удовлетворяющий условию поиска.

Однако ? используется для замены всего одного символа, поэтому если вы ищете sneaker?.txt, в результате вы найдете файл sneakers.txt, и/или sneakerz.txt, если такой файл существует.

В случае, если знак умножения входит в имя файла, как могло бы быть, если файл sneakers.txt назывался бы sneak*.txt, вам понадобятся регулярные выражения.

Регулярные выражения более сложны, чем прямолинейные знаки вопроса и умножения.

С помощью обратной косой черты (\), вы можете определить, что вы не хотите искать всё как происходит, если вы укажите знак умножения, а вам нужен именно знак умножения в имени файла.

Если файл называется sneak*.txt, введите:

sneak\*.txt

Ниже приведён краткий список знаков подстановки и регулярных выражений: