Как найти n-ую строку в файле в командной строке Linux? Как отобразить номер строки x для номера строки y?
В Linux существует несколько способов достижения одного и того же результата. Печать определенных строк из файла не является исключением.
Для отображения 13-й строки вы можете использовать комбинацию головы и хвоста:
head -13 file_name | tail +13
Или вы можете использовать команду sed:
sed -n '13p' file.txt
Чтобы отобразить номера строк от 20 до 25, вы можете объединить команды head и tail следующим образом:
head -25 file_name | tail +20
Или вы можете использовать команду sed следующим образом:
sed -n '20,25p' lines.txt
Подробное объяснение каждой команды следует далее. Мы также покажем использование команды awk для этой цели.
Отображение определенных строк с помощью команд head и tail
Это один из распространенных способов отображения выбранных строк. Нам легче запомнить и использовать.
Распечатать одну конкретную строку
Используйте комбинацию команды head и tail в следующей функции номер строки x:
head -x file_name | 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 строки:
head -y lines.txt | tail +x
Давайте возьмем практический пример. Предположим, вы хотите напечатать все строки от строки № 20 до 25:
destroyer@andreyex:~$ head -25 lines.txt | tail +20 Это номер строки 20 Это номер строки 21 Это номер строки 22 Это номер строки 23 Это номер строки 24 Это номер строки 25
Используйте SED для отображения определенных строк
Мощная команда sed предоставляет несколько способов печати определенных строк.
Например, для отображения 10-й строки вы можете использовать sed следующим образом:
sed -n '10p' file.txt
-n подавляет вывод, в то время как команда p печатает определенные строки. Прочитайте это руководство 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<=25' lines.txt Это номер строки 20 Это номер строки 21 Это номер строки 22 Это номер строки 23 Это номер строки 24 Это номер строки 25
Следует синтаксис, который похож на большинство языков программирования.
Мы надеемся, что эта быстрая статья помогла вам в отображении определенных строк файла в командной строке Linux. Если вы знаете какой-то другой прием для этой цели, поделитесь им с остальными в разделе комментариев.