Извлечение последних 10 строк файла, которые соответствуют "foo" - PullRequest
7 голосов
/ 27 марта 2011

Я хочу записать последние десять строк, которые содержат специальное слово, такое как "foo" в файле, в новый текстовый файл с именем, например, boo.txt.

Как мне добиться этого в командной строке терминала Unix?

Ответы [ 2 ]

21 голосов
/ 27 марта 2011

Вы можете использовать grep и tail:

grep "foo" input.txt | tail -n 10 > boo.txt

Число строк по умолчанию, напечатанное tail, равно 10, поэтому вы можете пропустить часть -n 10, если вы всегда хотите столько.

Перенаправление > создаст boo.txt, если он не существует. Если он существовал до его запуска, файл будет сначала обрезан (т.е. очищен). Так что boo.txt будет содержать не более 10 строк текста в любом случае.

Если вы хотите добавить к boo.txt, вам следует изменить перенаправление на >>.

grep "bar" input.txt | tail -n 42 >> boo.txt

Вас также может заинтересовать head, если вы ищете первые вхождения строки.

1 голос
/ 27 марта 2011
grep foo /path/to/input/file | tail > boo.txt
...