Нумерация абзацев командой 'cat'

В настоящее время я пытаюсь найти способ использовать команду cat для отображения текстового файла в виде автоматически пронумерованных абзацев для проекта, которым я занимаюсь, но я не смог найти ни одной команды.

Пример:

Frederick II (German: Friedrich; 24 January 1712 – 17 August 1786) was King of Prussia from 1740 until 1786.[1] His most significant accomplishments during his reign included his military victories, his reorganization of Prussian armies, his patronage of the Arts and the Enlightenment in Prussia, and his final success against great odds in the Seven Years' War. 

Frederick was the last titled King in Prussia and declared himself King of Prussia after achieving full sovereignty for all historical Prussian lands. Prussia had greatly increased its territories and became a leading military power in Europe under his rule. He became known as Frederick the Great (Friedrich der Große) and was affectionately nicknamed Der Alte Fritz ("Old Fritz") by the Prussian people.

Затем, когда команда была введена:

1. Frederick II (German: Friedrich; 24 January 1712 – 17 August 1786) was King of Prussia from 1740 until 1786.[1] His most significant accomplishments during his reign included his military victories, his reorganization of Prussian armies, his patronage of the Arts and the Enlightenment in Prussia, and his final success against great odds in the Seven Years' War. 

2.Frederick was the last titled King in Prussia and declared himself King of Prussia after achieving full sovereignty for all historical Prussian lands. Prussia had greatly increased its territories and became a leading military power in Europe under his rule. He became known as Frederick the Great (Friedrich der Große) and was affectionately nicknamed Der Alte Fritz ("Old Fritz") by the Prussian people.

Это то, что я, честно говоря, думал, что найду легко, но я не смог найти ни одного сайта с ответом о том, как это сделать. (Имейте в виду, что это должно быть изменение cat команда.)

5 ответов

Решение

Если абзац на самом деле строка, как ваш пример, и вы должны использовать только cat то наверняка захочешь -b (количество непустых строк)?

cat -b file

похоже:

     1  Frederick II (German: Friedrich; 24 January 1712 – 17 August 1786) was King of Prussia from 1740 until 1786.[1] His most significant accomplishments during his reign included his military victories, his reorganization of Prussian armies, his patronage of the Arts and the Enlightenment in Prussia, and his final success against great odds in the Seven Years' War. 

     2  Frederick was the last titled King in Prussia and declared himself King of Prussia after achieving full sovereignty for all historical Prussian lands. Prussia had greatly increased its territories and became a leading military power in Europe under his rule. He became known as Frederick the Great (Friedrich der Große) and was affectionately nicknamed Der Alte Fritz ("Old Fritz") by the Prussian people.

Чтобы сохранить это в файле вместо печати в терминале:

cat -b file > file2

В случае, если они вам действительно нужны, вы можете добавить точки после своих чисел, но не афаик, не прибегая к помощи другой команды, чтобы помочь cat , лайк sed , который здесь заменяет пробелы и числа в строках, которые начинаются с них (так как cat -b отступы) с одинаковым рисунком плюс . делать 1.2. и т. д. (это было предложено @terdon настолько молниеносно быстро, что у меня не было времени сделать это самому и взять кредит)

cat -b file | sed -r 's/^\s+[0-9]+/&./' > file2

В вашем примере каждый абзац на самом деле представляет собой одну строку. Единственный способ, которым он будет преобразован в абзац, - это обтекание текстом в любом приложении, которое использовалось для его отображения.

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

cat -b file

Если вы хотите отправить это в другой файл, используйте перенаправление:

cat -b file > newfile

man Команда действительно полезна для изучения использования других команд, например man cat дает:

NAME

       cat - concatenate files and print on the standard output

SYNOPSIS

       cat [OPTION]... [FILE]...

DESCRIPTION

       Concatenate FILE(s), or standard input, to standard output.

       -A, --show-all
              equivalent to -vET

       -b, --number-nonblank
              number nonempty output lines, overrides -n

       -e     equivalent to -vE

       -E, --show-ends
              display $ at end of each line

       -n, --number
              number all output lines

       -s, --squeeze-blank
              suppress repeated empty output lines

       -t     equivalent to -vT

       -T, --show-tabs
              display TAB characters as ^I

       -u     (ignored)

       -v, --show-nonprinting
              use ^ and M- notation, except for LFD and TAB

       --help display this help and exit

       --version
              output version information and exit

       With no FILE, or when FILE is -, read standard input.

EXAMPLES

       cat f - g
              Output f's contents, then standard input, then g's contents.

       cat    Copy standard input to standard output.

AUTHOR

       Written by Torbjorn Granlund and Richard M. Stallman.

REPORTING BUGS

       Report cat bugs to bug-coreutils@gnu.org
       GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
       General help using GNU software: <http://www.gnu.org/gethelp/>
       Report cat translation bugs to <http://translationproject.org/team/>

COPYRIGHT

       Copyright  ©  2013  Free Software Foundation, Inc.  License GPLv3+: GNU
       GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
       This is free software: you are free  to  change  and  redistribute  it.
       There is NO WARRANTY, to the extent permitted by law.

SEE ALSO

       tac(1)

       The  full  documentation for cat is maintained as a Texinfo manual.  If
       the info and cat programs are properly  installed  at  your  site,  the
       command

              info coreutils 'cat invocation'

       should give you access to the complete manual.

Если под "абзацами" вы подразумеваете блоки строк, разделенных пустыми строками, вы можете добавить нумерацию с помощью простой команды awk:

awk -v RS= '{print ++i, $0}' file

Чтобы сохранить пустые строки в выводе, вы можете установить переменную ORS в \n\n как это:

awk -v RS= -vORS='\n\n' '{print ++i, $0}' file

Если вы хотите сохранить вывод в новый файл, вы можете использовать перенаправление следующим образом:

awk -v RS= '{print ++i, $0}' file > newfile

"Абзацы" - это еще не параграфы, а просто длинные строки (как отметили другие)

Нам нужно нумеровать строки, а затем превратить их в абзацы. Для этого вы можете использовать сгиб.

cat -b file | fold -sw 80

Это нумерует непустые строки, переносит их в сгибы, которые сохраняют ширину в 80 символов (или столбцов) и разбивают строку на пробелы.

Frederick II (German: Friedrich; 24 January 1712 – 17 August 1786) was King of Prussia from 1740 until 1786.[1] His most significant accomplishments during his reign included his military victories, his reorganization of Prussian armies, his patronage of the Arts and the Enlightenment in Prussia, and his final success against great odds in the Seven Years' War.

Frederick was the last titled King in Prussia and declared himself King of Prussia after achieving full sovereignty for all historical Prussian lands. Prussia had greatly increased its territories and became a leading military power in Europe under his rule. He became known as Frederick the Great (Friedrich der Große) and was affectionately nicknamed Der Alte Fritz ("Old Fritz") by the Prussian people.

     1  Frederick II (German: Friedrich; 24 January 1712 – 17 August 1786)
was King of Prussia from 1740 until 1786.[1] His most significant
accomplishments during his reign included his military victories, his
reorganization of Prussian armies, his patronage of the Arts and the
Enlightenment in Prussia, and his final success against great odds in the Seven
Years' War.

     2  Frederick was the last titled King in Prussia and declared himself King
of Prussia after achieving full sovereignty for all historical Prussian lands.
Prussia had greatly increased its territories and became a leading military
power in Europe under his rule. He became known as Frederick the Great
(Friedrich der Große) and was affectionately nicknamed Der Alte Fritz ("Old
Fritz") by the Prussian people.

кошка

   -b, --number-nonblank
          number nonempty output lines, overrides -n

складка

   -s, --spaces
          break at spaces

   -w, --width=WIDTH
          use WIDTH columns instead of 80

Я не знаю никакой команды "параграфа". cat -b это то, что вы хотите использовать.

Предполагая, что это для конкретной контролируемой задачи оценки в этом году;) Путаница между строками и нумерацией абзацев, вероятно, связана с тем, что если вы создаете текстовый файл с использованием pico / nano, вы делаете его похожим на абзац, нажимая клавишу ввода при написании содержание, поэтому каждый из ваших "абзацев" занимает всего одну строку.

Попробуйте создать файл в тестовом редакторе в среде рабочего стола с переносом слов. Вы увидите cat -b вывод выглядит так, как вы ожидали. Абзац в редакторе командной строки - это просто очень длинная строка текста без переноса слов.

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