Добавьте столбец к текстовому файлу, где значение является номером строки?

Как я добавляю столбец к текстовому файлу, где значение является номером строки?

Файл прежде:

Foo Ba Lk Q
Lorem ipsum doler

Файл после

1 Foo Ba Lk Q
2 Lorem ipsum doler

и т.д.

4
задан 5 May 2017 в 06:44

2 ответа

Несколько разных подходов:

  1. кошка

    $ cat -n file
        1   Foo Ba Lk Q
        2   Lorem ipsum doler
    
  2. Perl

    perl -pe 's/^/$. /' file
    

    -pe означает "печать каждая входная строка после применения сценария, данного -e к нему". Затем мы заменяем ^ (начало строки) с номером строки ($.) и пространство.

    С другой стороны, так как это - Perl и TIMTOWTDI:

    perl -ne 'print "$. $_"' file 
    perl -pe '$_ = "$. $_"' file 
    

    Во всех этих примерах, если Вы хотите изменить исходный файл, использование -i:

    perl -i -pe 's/^/$. /' file
    perl -i -ne 'print "$. $_"' file 
    perl -i -pe '$_ = "$. $_"' file 
    
  3. awk

    $ awk '{print NR,$0}' file
    1 Foo Ba Lk Q
    2 Lorem ipsum doler
    

    Специальная переменная NR текущий номер строки и $0 текущая строка. Для внесения изменения в исходном файле (принимающий Вас имеют достаточно недавнюю версию GNU awk) сделайте:

    gawk -iinplace '{print NR,$0}' file
    
  4. sed

    $ sed = file | sed 'N;s/\n/\t/'
    1   Foo Ba Lk Q
    2   Lorem ipsum doler
    

    = означает, "печатают номер строки перед каждой строкой". Однако это печатает число на строке отдельно и входной строке под этим. Второе sed команда откладывает их на той же строке снова.

7
ответ дан 23 November 2019 в 11:42

Только для забавы

python3 -c "[print(i+1, l.strip())for i, l in enumerate(open('f').readlines())]"

Вывод:

1 Foo Ba Lk Q
2 Lorem ipsum doler

, Где f путь к Вашему файлу, в кавычках.

Объяснение

open('f').readlines()

считает файл, в строках, и

enumerate(open('f').readlines())

впоследствии добавит, что число к каждой из строк, и

print(i+1, l.strip())

распечатает число (+1, так как первый индекс 0), + соответствующая строка

4
ответ дан 23 November 2019 в 11:42

Другие вопросы по тегам:

Похожие вопросы: