Добавить номера строк в стандартный вывод текстовых файлов в терминале

о добавлении строк

В следующей статье мы увидим несколько способов добавлять номера строк в текстовые файлы что мы видим из терминал. Если вы когда-нибудь задумывались, как добавить эти номера строк в стандартный вывод текстовых файлов Gnu / Linux, в этой короткой статье мы попытаемся объяснить различные способы сделать это.

Есть несколько способов добавить номера строк в текстовый файл. Далее мы рассмотрим 6 различных способов сделать это. Я предполагаю, что помимо тех, которые будут рассмотрены ниже, будут еще несколько способов, но для начала их достаточно.

Добавить номера строк в стандартный вывод текстовых файлов

Для начала создадим файл с именем file.txt. В нем я добавлю несколько строк, чтобы дать содержание, которое будет идентифицировано. Чтобы увидеть содержимое только что созданного файла, мы откроем терминал (Ctrl + Alt + T) и напишем в нем:

кошачьи линии

cat archivo.txt

Использование команды nl

Как видно из вывода команды cat, в файле 10 строк, три из которых пусты. Мы добавим номера строк, используя команда nl. Для этого запустите:

nl линии

nl archivo.txt

Как было показано на предыдущем снимке, команда nl игнорирует пустые строки. Просто добавьте числа в непустые строки. Если ты хочешь пронумеровать все строки, включая пустые строки, запустите:

nl -ba строки

nl -b a archivo.txt

Кроме того, для большей наглядности при чтении результата мы можем добавить символ после цифр. Например, чтобы добавить точку после чисел, выполните:

nl -s пунктирные линии

nl -s "." archivo.txt

Вы можете пожелать выровнять ширину вывода. Для этого используйте -w параметр со значением переменной как показано ниже:

nl w3 строки

nl -w3 archivo.txt

Использование команды cat

Команда cat используется для отображения содержимого файла, как показано на первом снимке экрана этой статьи. Если вы хотите добавить числа к выводу файла, используйте -n как показано ниже:

cat -n линии

cat -n archivo.txt

Вам может быть интересно передать стандартный вывод в новый файл. Для этого вам просто нужно запустить команду, как показано ниже:

cat -n archivo.txt > nuevoarchivo.txt

Использование команды awk

Это, пожалуй, самый сложный метод получения результата. Добавить номера строк для вывода файла с помощью команды awk, бежать:

строки awk

awk 'BEGIN{i=1} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt

Как вы видели, я назначил начальный номер как 1 в параметре BEGIN. Мы можем присвоить любой другой начальный номер по вашему выбору, например 5, как показано ниже:

awk запускается с 5

awk 'BEGIN{i=5} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt

Используйте следующую команду если вы не хотите учитывать пустые строки:

awk без пустых строк

awk 'BEGIN{i=0} {if($0 !~ /^$/) {printf ("%d.%s \n",i,$0); i++} else { print $0} } ' archivo.txt

Если вы считаете, что приведенные выше команды немного сложно запомнить, используйте следующую команду, которая даст вам тот же результат, что и первая, показанная с помощью команды AWK:

awk fnr

awk '{ print FNR " " $0 }' archivo.txt

Использование команды sed

Чтобы добавить номер строки в стандартный вывод файла с помощью команды sed, бежать:

линии sed

sed '/./=' archivo.txt | sed '/./N; s/\n/ /'

У команды sed есть классная функция, о которой стоит упомянуть. Мы можем отображать конкретную строку из файла. Например, чтобы отобразить седьмую строку нашего файла, запустите:

бетонная линия sed

sed -n 7p archivo.txt

Используя команду less

к добавить номер в стандартный вывод файла, используя меньше, бежать:

меньше -n

less -N archivo.txt

Использование команды grep

Команду grep можно использовать для поиска строки, содержащей определенный текст. Если хочешь добавить номера строк к строкам, содержащим искомый текст, бежать:

grep -н

grep -n "línea" archivo.txt

Имейте в виду, что эта команда добавит числа только к строкам, содержащим строку поиска. Кроме того, как видно на скриншоте, он окрашивает искомый текст. Все остальное в данном файле будет пропущено.

И все, даже я должен сказать, что у этих команд есть другие параметры, которые они могут дополнять или расширять те, что были описаны в этой статье. Для получения дополнительной информации о командах, названных здесь, вы можете обратиться к страницы руководства.


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

3 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован.

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   никто сказал

    в командах awk не нужно искать регулярные выражения "/.*/"
    по умолчанию он уже делит файл на строки, а $ 0 содержит строку, поэтому

    awk 'BEGIN {i = 1} {printf "% 03d:% s \ n", i, $ 0; i ++} 'file.txt

    работает так же (и лучше), чем

    awk 'BEGIN {i = 1} /.*/[printf "% d.% s \ n", i, $ 0; i ++} 'file.txt

  2.   Мигель Кинтана сказал

    Отличный вклад! Большое спасибо!

  3.   Родриго Луна сказал

    Перед началом дружеского приветствия.

    У меня проблема со следующим сценарием.

    Информация о строках, соответствующих поиску, получается из файла и сохраняется в переменной.
    пример:
    values ​​= `awk -F«: »'{print $ 1» »$ 2» »$ 3}' hociporky | grep "201025" -n`

    Затем вы перебираете переменную и затем ищите определенную строку в файле.
    пример:
    для значения в $ values; делать
    sed -n файл "$ {значение} p"
    сделанный

    Но это отправляет ошибку
    sed: -e выражение # 1, char 1: неизвестная команда: `

    Может кто-нибудь объяснить мне, почему и как это можно решить?