Modificando o comando cat para numerar parágrafos e exibir apenas o último parágrafo

0

Eu tenho um arquivo de texto para o qual preciso fazer três coisas:

  1. Modifique o comando "cat" para destacar palavras-chave enquanto mostra o conteúdo completo do arquivo. SOLUÇÃO ENCONTRADA
  2. Modifique o comando "cat" para numerar automaticamente os parágrafos. Estes são separados por uma única linha em branco.
  3. Modifique o comando "cat" para exibir apenas o parágrafo final.

A parte complicada é que tudo isso precisa ser feito pelo comando modificando o cat .

Eu tenho visto muitos posts no fórum explicando que o gato não é para isso - e eu posso entender por quê. No entanto, o desafio é que eu tenho que usar o gato !

    
por test_user123 05.09.2016 / 22:21

3 respostas

1

Você realmente precisa usar o gato?

cat -n  thefile | tail -n1 

O que você quer dizer com "Realçar palavras-chave enquanto mostra o conteúdo completo do arquivo".

Quais palavras-chave você deseja destacar?

Qual é o propósito de numerar todos os parágrafos, mas mostrar apenas o último? (NOTA: o comando que escrevo fará exatamente isso, cat -n para numerar os parágrafos e tail -n1 para mostrar apenas o último parágrafo.)

    
por 05.09.2016 / 22:38
0

Boa sorte no ensino de cursos de computação gcse;) Ele não especifica o uso de gato na pergunta, pelo menos na pergunta da folha de perguntas!

Eu acabei de fazer

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

para 7ii e

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

para 7iii

O importante na questão 7 é usar pipe e outras coisas.

    
por 01.11.2016 / 03:42
0

Eu achei a pergunta e os comentários interessantes, então eu dei uma olhada mais profunda nela. De acordo com os comentários dados, entendo que a questão é mais sobre " Como modificar a saída do comando cat? ", talvez apenas usando opções de comando e, se possível. Apenas uma nota, a questão seria mais fácil de entender se uma entrada de amostra for fornecida e a saída esperada for mostrada.

Assume-se que o seguinte TEST_FILE é dado:

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.

Os parágrafos não são separados por uma única linha em branco (como foi solicitado), mas é bom saber como alguns dos comandos estão funcionando.

Suprimir linhas de saída vazias 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. ...

Além disso, numere todas as linhas de saída :

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. ...

E número de linhas de saída não vazias somente :

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. ...

De acordo com sua "SOLUTION FOUND" parece concordar em usar pipe e um segundo comando para modificar a saída do comando cat . Pelo menos para o seu terceiro requisito, seria necessário.

Portanto, você pode obter o mesmo resultado com as linhas numéricas nl (mas somente se as linhas vazias estiverem realmente vazias e não contiverem espaços em branco):

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. ...

Em seguida, seria possível Remover linhas em branco com grep também:

cat -s -n -b TEST_FILE | grep .

No caso de linhas com espaços em branco, seria necessário removê-las primeiro:

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

Para a nova linha do Echo no Bash , você pode usar:

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

Você também pode exibir determinados números de linha . Mas isso já está deixando o escopo da questão.

    
por 16.05.2018 / 18:36

Tags