Как в Linux вывести строку?

Начнем с команды, с которой уже не однократно встречались, команда cat. Сначала посмотрим справку по данной команде с помощью man cat. Этая команда предназначена для объединения файлов и печати на стандартный вывод информации. Под стандартным выводом предполагается вывод на консоль информации. Так же можно увидеть, что у данной команды есть ключи.

Как вывести сходу информацию из двух созданных файлов?

cat hello1.txt hello2.txt

А в справке было написано, что команда сможет объединять содержимое файлов.

cat hello1.txt hello2.txt > hello3.txt
cat hello3.txt

Мы вывели на стандартный вывод (консоль) содержание файлов и передали то, что на экране в новый файл hello3.txt. А затем просто вывели на консоль.

Читайте также:  Установка и настройка VPN в Ubuntu

Как вывести некоторую строку файла в 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 >> ~/000
done
sort ~/000

Данный скрипт на bash хватит всё файлы из папки etc, с них берёт пятую строку и выводит в файл, который создаёт в домашнем каталоге, а затем сортирует.

Читайте также:  Отключаем swscale в ffmpeg

Как вывести нужные строки в 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:

Читайте также:  Разбить строку по пробелу и взять 4 элемент в Linux

$ 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

Line 1
Line 2
Line 4