Изменение команды cat для нумерации абзацев и отображения только последнего абзаца

У меня есть текстовый файл, для которого мне нужно сделать три вещи:

  1. Измените команду «cat», чтобы выделять ключевые слова при отображении полного содержимого файла. РЕШЕНИЕ НАЙДЕНО
  2. Измените команду «cat» для автоматической нумерации абзацев. Они разделены одной пустой строкой.
  3. Измените команду «cat», чтобы отображался только последний абзац.

Сложность в том, что все это нужно сделать, изменив команду cat .

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

0
13.04.2017, 15:36
3 ответа

Вам действительно нужно использовать кошку?

cat -n  thefile | tail -n1 

Что вы имеете в виду, говоря «Выделите ключевые слова, показывая при этом полное содержимое файла»?

Какие ключевые слова вы хотите выделить?

С какой целью пронумеровать все абзацы, но показать только последний? (ПРИМЕЧАНИЕ: команда, которую я напишу, сделает именно это: cat -n для нумерации абзацев и tail -n1 для отображения только последнего абзаца.)

1
28.01.2020, 02:47

Удачи в преподавании курсовой работы по вычислительной технике gcse;) В вопросе не указано использование cat, по крайней мере, в вопросе!

Я только что сделал

perl -00pe ‘s/^/$. /’ textfile

для 7ii и

perl -00pe ‘s/^/$. /’ jamestextfile | tail -n1

для 7iii

В вопросе 7 важно использовать конвейер и прочее.

0
28.01.2020, 02:47

La ​​pregunta y los comentarios me parecieron interesantes, así que investigué más a fondo. De acuerdo con los comentarios dados, entiendo que la pregunta es más sobre "¿Cómo modificar la salida del comando cat? ", tal vez solo usando interruptores de comando y si es posible. Solo una nota, la pregunta sería más fácil de entender si se proporciona una entrada de muestra y se muestra la salida esperada.

Se supone que se da lo siguiente TEST_FILE:

This is the first (1) paragraph. This is the second (2) sentence. This is the third (3) sentence.\n The fourth (4) sentence of the first (1) paragraph is the second (2) line of the first (1) paragraph.

This is the second (2) paragraph. This is the second (2) sentence of the second (2) paragraph. This is the third (3) sentence of the second (2) paragraph.


This is the third (3) paragraph. This is the second (2) sentence. This is the third (3) sentence of the second (3) paragraph.



This is the fourth (4) paragraph. This is the second (2) sentence of the fourth (4) paragraph. This is the third (3) sentence.




This is the fifth (5) paragraph. This is the second (2) sentence. This is the third (3) sentence.\n The fourth (4) sentence of the fifth (5) paragraph is the second (2) line of the fifth (5) paragraph.

Los párrafos no están separados por una sola línea en blanco (como se solicitó ), pero es bueno saber cómo funcionan algunos de los comandos.

Suprimir líneas de salida vacías repetidas:

cat -s TEST_FILE 
This is the first (1) paragraph....

This is the second (2) paragraph....

This is the third (3) paragraph....

This is the fourth (4) paragraph....

This is the fifth (5) paragraph....

Número adicional de todas las líneas de salida:

cat -s -n TEST_FILE
     1 This is the first (1) paragraph....
     2
     3 This is the second (2) paragraph....
     4
     5 This is the third (3) paragraph....
     6
     7 This is the fourth (4) paragraph....
     8
     9 This is the fifth (5) paragraph....

Y número de líneas de salida no vacías solamente:

cat -s -n -b TEST_FILE
     1 This is the first (1) paragraph....

     2 This is the second (2) paragraph....

     3 This is the third (3) paragraph....

     4 This is the fourth (4) paragraph....

     5 This is the fifth (5) paragraph....

Según su "SOLUCIÓN ENCONTRADA", parece estar de acuerdo en usar tubería y un segundo comando para modificar la salida del comando cat. Al menos para su tercer requisito sería necesario.

Por lo tanto, podría lograr el mismo resultado con líneas numéricasnl(pero solo si las líneas vacías están realmente vacías y no contienen espacios en blanco):

cat TEST_FILE | nl
     1  This is the first (1) paragraph....

     2  This is the second (2) paragraph....


     3  This is the third (3) paragraph....



     4  This is the fourth (4) paragraph....




     5  This is the fifth (5) paragraph....

Entonces sería posible Eliminar líneas en blanco congreptambién:

cat -s -n -b TEST_FILE | grep.

En caso de líneas con espacios en blanco sería necesario eliminarlos primero:

grep -v -e '^[[:space:]]*$' TEST_FILE | nl

Para Echo newline en Bash puede usar:

echo -e $(cat -s TEST_FILE | tail -1)
echo -e $(cat -s -n -b TEST_FILE | tail -1)

También puede mostrar solo ciertos números de línea . Pero esto ya está saliendo del alcance de la pregunta.

0
28.01.2020, 02:47

Теги

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