- Вывод строк с определённого места
- Peter Leung, «Командная строка: маленькие хитрости от Linux Commando»
- Выбираем нужные строки из файла с помощью sed
- Как в Linux вывести строку?
- Как вывести сходу информацию из двух созданных файлов?
- Как вывести некоторую строку файла в Linux?
- Как вывести 5-ый строку в Linux?
- Как вывести нужные строки в Linux из файла с помощью sed?
- Как отобразить определенные строки файла в командной строке Linux
- Отображение определенных строк с помощью команд head и tail
- Распечатать одну конкретную строку
- Распечатать определенный диапазон строк
- Используйте SED для отображения определенных строк
- Используйте AWK для печати определенных строк из файла
- Команда Head в Linux
- Синтаксис команды Head
- Как использовать команду головы
- Как отобразить определенное количество строк
- Как отобразить определенное количество байтов
- Как отображать несколько файлов
- Как использовать голову с другими командами
- Выводы
Вывод строк с определённого места
Как вывести строки, начиная со строки, содержащей определённое регулярное выражение, далее все строки под ней до конца файла?
У grep есть ключ -A, но ему надо указывать количество строк после совпадения. Надо получать вывод до конца файла.
seq 100 | sed -n ‘/64/,//p’
Как вывести строки, начиная со строки, содержащей определённое регулярное выражение, далее все строки под ней до конца файла?
Собственно, примерно то же, что и у тебя. «64» — строка, с которой выводить. Регулярка, в общем.
не, вторая // что значит?
Регулярное выражение для пустой подстроки (именно подстроки, а не строки ^$ ). Так как любая строка содержит в себе пустую подстроку, то оно матчит всё что угодно.
Регулярное выражение для пустой подстроки (именно подстроки, а не строки ^$). Так как любая строка содержит в себе пустую подстроку, то оно матчит всё что угодно.
я в курсе. Но // является _вторым_ адресным выражением, т.е. ДО чего искать. Если // матчит всё, что угодно, то должно получится вот так:
Видимо в данном случае матчится уже скомпилированое регулярное выражение
Да, всё так. Я ещё думал (плохо думал раз упустил, что это конец диапазона): обычно ведь пустой RE не используется (ничего не матчит), либо используется для неявного переиспользования предыдущего шаблона (как в Vim).
используется для неявного переиспользования предыдущего шаблона (как в Vim).
оно везде так AFAIK
Буду знать. Раньше использовал подобную конструкцию именно в том варианте, как было задано в топике.
Источник
Peter Leung, «Командная строка: маленькие хитрости от Linux Commando»
Выбираем нужные строки из файла с помощью sed
Тому, кто пишет много скриптов bash, часто приходится выбирать нужные строки из текста, например готовые блоки кода. Вчера я как раз должен был извлечь первую строку из файла, назовем его somefile.txt.
Это очень просто сделать при помощи команды head:
Для более сложных задач, например, извлечь вторую и третью строки из того же файла, команда head не подходит.
Давайте попробуем команду sed ≈ редактор потока (STream Editor).
Моя первая попытка применить команду p (print) оказалась неудачной:
Обратите внимание, что редактор печатает весь файл, причем указанную первую строку печатает дважды. Почему? По умолчанию редактор перепечатывает на стандартный вывод каждую строку вводимого файла. Четко заданная команда 1p приказывает печатать первую строку. В итоге первая строка дублируется.
Чтобы этого не происходило нужно подавить дефолтный вывод при помощи опции -n, чтобы на выводе был только результат команды 1p:
Можно пойти другим путем и удалить из файла все строки, кроме первой:
где ‘1!d’ означает: если строка не является первой (!), то подлежит удалению. Обратите внимания на кавычки (одинарные). Они совершенно необходимы, так как без них конструкция 1!d вызовет последнюю запускавшуюся в шелле команду, начинающуюся с буквы d.
Для извлечения нескольких строк, скажем, со второй по четвертую, можно поступить одним из следующих способов:
Интервал обозначается через запятую включительно.
А если строки не идут друг за другом, например, с первой по вторую и еще четвертую?
Если вам известны иные способы выбирать нужные строки из файлов, сообщите, пожалуйста, в комментариях.
Блестящий пример нестандартного подхода продемонстрировал в комментариях к этой статье некий Chris:
Если я хочу извлечь пятую строку файла, то делаю так: |
А правда, здорово! И никаких заумных команд не надо с их километровыми манами. Кстати так и нужные блоки подряд идущих строк можно извлекать.
Источник
Как в Linux вывести строку?
Начнем с команды, с которой уже не однократно встречались, команда cat. Сначала посмотрим справку по данной команде с помощью man cat. Этая команда предназначена для объединения файлов и печати на стандартный вывод информации. Под стандартным выводом предполагается вывод на консоль информации. Так же можно увидеть, что у данной команды есть ключи.
Как вывести сходу информацию из двух созданных файлов?
cat hello1.txt hello2.txt
А в справке было написано, что команда сможет объединять содержимое файлов.
cat hello1.txt hello2.txt > hello3.txt
cat hello3.txt
Мы вывели на стандартный вывод (консоль) содержание файлов и передали то, что на экране в новый файл hello3.txt. А затем просто вывели на консоль.
Как вывести некоторую строку файла в Linux?
При трейсе ошибки установки одного скрипта, возникла необходимость прочитать 98 строку файла. Делается это, ожидаемо, через команду вывода cat
# cat filename | head -n98 | tail -n1
где head -n предлагает сделать нужную строку, а tail -n задает сколько строк показать перед нужной. В данном варианте показана будет только одна строка.
То есть если нам необходимо вывести какой-никакой то сегмент строк, скажем, строки с 10 по 20, то выражение будет иметь вид
# cat filename | head -n20 | tail -n11
Как вывести 5-ый строку в Linux?
Если я хочу извлечь пятую строку файла, то делаю так:
$ head -n 5 имя_файла | tail -n 1
Ну или bash script
#!/bin/bash
for i in $(find /etc/ -type f);
do cat $i | head -n5 | tail -n1 >>
Данный скрипт на bash хватит всё файлы из папки etc, с них берёт пятую строку и выводит в файл, который создаёт в домашнем каталоге, а затем сортирует.
Как вывести нужные строки в Linux из файла с помощью sed?
Тому, кто пишет много скриптов bash, довольно частенько приходится выбирать нужные строки из текста, например готовые блоки кода. Вчера я как раз обязан был извлечь первую строку из файла, назовем его somefile.txt.
$ cat somefile.txt
Line 1
Line 2
Line 3
Line 4
Это весьма просто сделать при помощи команды head:
$ head -1 somefile.txt
Line 1
Для более сложных задачек, например, извлечь вторую и третью строки из того же файла, команда head не подходит. Подавайте попробуем команду sed ? редактор потока (STream Editor). Моя первая попытка применить команду p (print) очутилась неудачной:
$ sed 1p somefile.txt
Line 1
Line 1
Line 2
Line 3
Line 4
Обратите внимание, что редактор отпечатывает весь файл, причем указанную первую строку печатает дважды. Почему? По умолчанию редактор перепечатывает на типовой вывод каждую строку вводимого файла. Четко заданная команда 1p приказывает печатать первоначальную строку. В итоге первая строка дублируется. Чтобы этого не происходило нужно подавить дефолтный вывод при поддержки опции -n, чтобы на выводе был только результат команды 1p:
$ sed -n 1p somefile.txt
Line 1
Можно пойти иным путем и удалить из файла все строки, кроме первой:
$ sed ‘1!d’ somefile.txt
Line 1
где ‘1!d’ значит: если строка не является первой (!), то подлежит удалению. Обратите внимания на кавычки (одинарные). Они асбсолютно необходимы, так как без них конструкция 1!d вызовет последнюю запускавшуюся в шелле команду, начинающуюся с буквы d. Для извлечения многих строк, скажем, со второй по четвертую, можно поступить одним из следующих способов:
$ sed -n 2,4p somefile.txt
$ sed ‘2,4!d’ somefile.txt
Перерыв обозначается через запятую включительно. А если строки не идут друг за другом, например, с первоначальной по вторую и еще четвертую?
Источник
Как отобразить определенные строки файла в командной строке Linux
Главное меню » Linux » Как отобразить определенные строки файла в командной строке Linux
В Linux существует несколько способов достижения одного и того же результата. Печать определенных строк из файла не является исключением.
Для отображения 13-й строки вы можете использовать комбинацию головы и хвоста:
Или вы можете использовать команду sed:
Чтобы отобразить номера строк от 20 до 25, вы можете объединить команды head и tail следующим образом:
Или вы можете использовать команду sed следующим образом:
Подробное объяснение каждой команды следует далее. Мы также покажем использование команды awk для этой цели.
Отображение определенных строк с помощью команд head и tail
Это один из распространенных способов отображения выбранных строк. Нам легче запомнить и использовать.
Распечатать одну конкретную строку
Используйте комбинацию команды head и tail в следующей функции номер строки x:
Вы можете заменить x номером строки, которую хотите отобразить. Итак, допустим, вы хотите отобразить 13-ю строку файла.
Объяснение : Вы, вероятно, уже знаете, что команда head получает строки файла с самого начала, а команда tail – с конца.
Часть «head -x» команды получит первые x строк файлов. Затем он перенаправит этот вывод в команду tail. Команда tail отображает все строки, начиная с номера строки x.
Совершенно очевидно, что если вы возьмете 13 строк сверху, строки, начинающиеся с номера 13 до конца, будут 13-й строкой. Это логика этой команды.
Распечатать определенный диапазон строк
Теперь давайте возьмем нашу комбинацию команд head и tail, чтобы отобразить более одной строки.
Скажем, вы хотите отобразить все строки от х до у. Это включает в себя также x и y строки:
Давайте возьмем практический пример. Предположим, вы хотите напечатать все строки от строки № 20 до 25:
Используйте SED для отображения определенных строк
Мощная команда sed предоставляет несколько способов печати определенных строк.
Например, для отображения 10-й строки вы можете использовать sed следующим образом:
-n подавляет вывод, в то время как команда p печатает определенные строки. Прочитайте это руководство SED, чтобы узнать и понять его в деталях.
Чтобы отобразить все строки от номера строки x до номера строки y, используйте это:
Используйте AWK для печати определенных строк из файла
Команда awk может показаться сложной, и, безусловно, здесь задействована кривая обучения. Но, как и sed, awk также довольно мощный инструмент для редактирования и манипулирования содержимым файлов.
NR обозначает «текущий номер записи». Пожалуйста, прочитайте наше руководство по команде AWK для получения дополнительной информации.
Чтобы отобразить все строки от x до y, вы можете использовать команду awk следующим образом:
Следует синтаксис, который похож на большинство языков программирования.
Мы надеемся, что эта быстрая статья помогла вам в отображении определенных строк файла в командной строке Linux. Если вы знаете какой-то другой прием для этой цели, поделитесь им с остальными в разделе комментариев.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Команда Head в Linux
Команда head выводит первые строки (по умолчанию 10 строк) одного или нескольких файлов или передаваемых данных в стандартный вывод.
В этом руководстве мы объясним, как использовать утилиту head в Linux, на практических примерах и подробных объяснениях наиболее распространенных опций head.
Синтаксис команды Head
Синтаксис команды head следующий:
- OPTION — варианты головы . Мы рассмотрим наиболее распространенные варианты в следующих разделах.
- FILE — Ноль или более имен входных файлов. Если ФАЙЛ не указан или если ФАЙЛ — — , head будет читать стандартный ввод.
Как использовать команду головы
В простейшей форме при использовании без каких-либо параметров команда head отобразит первые 10 строк.
Как отобразить определенное количество строк
Используйте параметр -n ( —lines ), за которым следует целое число, указывающее количество отображаемых строк:
Вы можете опустить букву n и использовать только дефис ( — ) и цифру (без пробелов между ними).
Чтобы отобразить первые 30 строк файла с именем filename.txt , введите:
Следующее приведет к тому же результату, что и приведенные выше команды:
Как отобразить определенное количество байтов
Параметр -c ( —bytes ) позволяет распечатать определенное количество байтов:
Например, чтобы отобразить первые 100 байтов данных из файла с именем filename.txt , введите:
Вы также можете использовать суффикс множителя после числа, чтобы указать количество отображаемых байтов. b умножает его на 512, kB умножает на 1000, K умножает на 1024, MB умножает на 1000000, M умножает на 1048576 и так далее.
Следующая команда отобразит первые пять килобайт (2048) файла filename.txt :
Как отображать несколько файлов
Если в качестве входных данных для команды head указано несколько файлов, она отобразит первые десять строк из каждого предоставленного файла.
Вы можете использовать те же параметры, что и при отображении одного файла.
В этом примере показаны первые 20 строк файлов filename1.txt и filename2.txt :
Если используется более одного файла, каждому выходному файлу предшествует заголовок с именем файла.
Как использовать голову с другими командами
Команду head можно использовать в сочетании с другими командами, перенаправляя стандартный вывод из / в другие утилиты с помощью каналов.
Следующая команда будет хешировать переменную среды $RANDOM , отображать первые 32 байта и отображать случайную строку из 24 символов:
Выводы
К настоящему времени вы должны хорошо понимать, как использовать команду Linux head. Это дополнение к команде tail, которая выводит последние строки файла на терминал.
Источник