- Как в Linux вывести строку?
- Как вывести сходу информацию из двух созданных файлов?
- Как вывести некоторую строку файла в Linux?
- Как вывести 5-ый строку в Linux?
- Как вывести нужные строки в Linux из файла с помощью sed?
- Linux вывод определенной строки
- Как отобразить определенные строки файла в командной строке Linux
- Отображение определенных строк с помощью команд head и tail
- Распечатать одну конкретную строку
- Распечатать определенный диапазон строк
- Используйте SED для отображения определенных строк
- Используйте AWK для печати определенных строк из файла
Как в Linux вывести строку?
Начнем с команды, с которой уже не однократно встречались, команда cat. Сначала посмотрим справку по данной команде с помощью man cat. Этая команда предназначена для объединения файлов и печати на стандартный вывод информации. Под стандартным выводом предполагается вывод на консоль информации. Так же можно увидеть, что у данной команды есть ключи.
Как вывести сходу информацию из двух созданных файлов?
А в справке было написано, что команда сможет объединять содержимое файлов.
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
#!/bin/bash
for i in $(find /etc/ -type f);
do cat $i | head -n5 | tail -n1 >> ~/000
done
sort ~/000
Данный скрипт на 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
Перерыв обозначается через запятую включительно. А если строки не идут друг за другом, например, с первоначальной по вторую и еще четвертую?
$ sed -n -e 1,2p -e 4p somefile.txt
Linux вывод определенной строки
Простейший способ вывести текст — использование стандартного вывода. Это удобно для быстрого просмотра части текста, или для передачи ее другим инструментам командной строки.
Многие еще используют для вывода текстовых файлов утилиту cat, особенно, если файл небольшого размера. Чтобы вывести на экран все содержимое файла, используйте cat и укажите имя файла в качестве аргумента.
Используйте опцию `-v’ для cat, чтобы вывести символы, не отображаемые на печати, например, управляющие символы. При указанной опции cat выводит эти символы в нотации «с крышкой» , т.е. они представляются сочетанием `^’ и символа, соответствующего управляющему символу (например, символ звукового сигнала будет представлен как `^G’ ).
Чтобы вывести управляющие символы файла `translation’, введите:
$ cat -v translation | less [Enter]
Чтобы визуально отобразить конец строки в каждой строке, используйте опцию `-E’; она приведет к тому, что в конце каждой строки появится символ `$’ .
Полезной является опция `-T’, которая выводит все табуляции в виде `^I’ .
Опция `-A’ комбинирует все три вышеуказанные опции — как если бы Вы указали опции с помощью `-vET’.
Чтобы вывести только начало текстового файла, используйте команду head. По умолчанию она выводит на экран первые десять строк из своего ввода.
Чтобы вывести первые десять строк файла `placement-list’, введите:
Вы можете указать требуемое число строк для вывода. Если Вы укажете больше строк, чем содержится в файле, head просто выведет весь текст.
Чтобы вывести первую строку файла `placement-list’, введите:
$ head -1 placement-list [Enter]
Чтобы вывести 66 строк от начала файла `placement-list’, введите:
$ head -66 placement-list [Enter]
Чтобы вывести определенное число символов, а не строк, укажите число символов для вывода через аргумент опции `-c’.
Чтобы вывести первый символ файла `placement-list’, введите:
$ head -c1 placement-list [Enter]
Утилита tail работает подобно head, но выводит последнюю часть своего ввода. Как и в head, по умолчанию выводятся десять строк.
Чтобы вывести последние десять строк файла `placement-list’, введите:
Чтобы вывести последние четырнадцать строк файла `placement-list’, введите:
$ tail -14 placement-list [Enter]
Иногда требуется просматривать конец файла непрерывно; это полезно для «растущих» файлов, записываемых другими процессами. Чтобы непрерывно просматривать конец файла, используйте tail с опцией `-f’. Нажмите Ctrl-c для прекращения просмотра.
Чтобы непрерывно просматривать конец файла `access_log’, введите:
Чтобы вывести на экран определенную строку из файла, используйте утилиту sed. Укажите в кавычках номер нужной строки и сочетание `!d’. Вторым аргументом должно быть имя файла.
Чтобы вывести строку 47 из файла `placement-list’, введите:
$ sed ’47!d’ placement-list [Enter]
Чтобы вывести участок файла в несколько строк, укажите номера стартовой и конечной строки через запятую.
Чтобы вывести строки с 47 по 108 из файла `placement-list’, введите:
$ sed ‘47,108!d’ placement-list [Enter]
Вы можете также скомбинировать команды head и tail в конвейер, чтобы добиться нужного результата.
Чтобы вывести десятую строку файла `placement-list’, введите:
$ head placement-list tail -1 [Enter]|
Чтобы вывести пятую и четвертую строки с конца файла `placement-list’, введите:
$ tail -5 placement-list head -2 [Enter]|
Чтобы вывести 500-й символ файла `placement-list’, введите:
$ head -c500 placement-list tail -c1 [Enter]|
Чтобы вывести первый символ пятой строки файла `placement-list’, введите:
$ head -5 placement-list tail -1 | head -c1 [Enter]|
Вы можете использовать sed для выделения текста между строками определенного вида и вывода выделенного текста или всего текста, кроме выделенногог участка.Строки для поиска — это либо слова, либо регулярные выражения.
Для выделения определенного абзаца используйте опцию `-n’ с указанием строки `’/first/,/last/p», где first и last — границы выделения. Это полезно, например, для вывода отдельных глав или разделов текста, если Вы знаете способ его разделения.
Чтобы вывести текст из файла `book-draft’ между строками `Chapter 3′ и `Chapter 4′, введите:
$ sed -n ‘/Chapter 3/,/Chapter 4/p’ book-draft [Enter]
Чтобы вывести весь текст, кроме указанного участка, опустите опцию `-n’.
Чтобы вывести весь текст из файла `book-draft’, кроме текста между строками `Chapter 3′ и `Chapter 4′, введите:
$ sed ‘/Chapter 3/,/Chapter 4/p’ book-draft [Enter]
Как отобразить определенные строки файла в командной строке Linux
Добавить в избранное
Главное меню » Linux » Как отобразить определенные строки файла в командной строке Linux
К ак найти n-ую строку в файле в командной строке Linux? Как отобразить номер строки x для номера строки y?
В Linux существует несколько способов достижения одного и того же результата. Печать определенных строк из файла не является исключением.
Для отображения 13-й строки вы можете использовать комбинацию головы и хвоста:
head -13 file_name | tail +13
Или вы можете использовать команду sed:
Чтобы отобразить номера строк от 20 до 25, вы можете объединить команды head и tail следующим образом:
head -25 file_name | tail +20
Или вы можете использовать команду sed следующим образом:
Подробное объяснение каждой команды следует далее. Мы также покажем использование команды awk для этой цели.
Отображение определенных строк с помощью команд head и tail
Это один из распространенных способов отображения выбранных строк. Нам легче запомнить и использовать.
Распечатать одну конкретную строку
Используйте комбинацию команды head и tail в следующей функции номер строки x:
Вы можете заменить x номером строки, которую хотите отобразить. Итак, допустим, вы хотите отобразить 13-ю строку файла.
destroyer@andreyex:~$ head -13 lines.txt | tail +13 Это номер строки 13
Объяснение : Вы, вероятно, уже знаете, что команда head получает строки файла с самого начала, а команда tail — с конца.
Часть «head -x» команды получит первые x строк файлов. Затем он перенаправит этот вывод в команду tail. Команда tail отображает все строки, начиная с номера строки x.
Совершенно очевидно, что если вы возьмете 13 строк сверху, строки, начинающиеся с номера 13 до конца, будут 13-й строкой. Это логика этой команды.
Распечатать определенный диапазон строк
Теперь давайте возьмем нашу комбинацию команд head и tail, чтобы отобразить более одной строки.
Скажем, вы хотите отобразить все строки от х до у. Это включает в себя также x и y строки:
Давайте возьмем практический пример. Предположим, вы хотите напечатать все строки от строки № 20 до 25:
destroyer@andreyex:~$ head -25 lines.txt | tail +20 Это номер строки 20 Это номер строки 21 Это номер строки 22 Это номер строки 23 Это номер строки 24 Это номер строки 25
Используйте SED для отображения определенных строк
Мощная команда sed предоставляет несколько способов печати определенных строк.
Например, для отображения 10-й строки вы можете использовать sed следующим образом:
-n подавляет вывод, в то время как команда p печатает определенные строки. Прочитайте это руководство SED, чтобы узнать и понять его в деталях.
Sed является обязательной командой для системных администраторов Linux. В этом подробном руководстве подробно рассматриваются все команды Sed и модель исполнения инструмента.
Чтобы отобразить все строки от номера строки x до номера строки y, используйте это:
destroyer@andreyex:~$ sed -n '3,7p' lines.txt Это номер строки 3 Это номер строки 4 Это номер строки 5 Это номер строки 6 Это номер строки 7
Используйте AWK для печати определенных строк из файла
Команда awk может показаться сложной, и, безусловно, здесь задействована кривая обучения. Но, как и sed, awk также довольно мощный инструмент для редактирования и манипулирования содержимым файлов.
destroyer@andreyex:~$ awk 'NR==5' lines.txt Это номер строки 5
NR обозначает «текущий номер записи». Пожалуйста, прочитайте наше руководство по команде AWK для получения дополнительной информации.
Чтобы отобразить все строки от x до y, вы можете использовать команду awk следующим образом:
destroyer@andreyex:~$ awk 'NR>=20 && NRСледует синтаксис, который похож на большинство языков программирования.
Мы надеемся, что эта быстрая статья помогла вам в отображении определенных строк файла в командной строке Linux. Если вы знаете какой-то другой прием для этой цели, поделитесь им с остальными в разделе комментариев.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.