Muestra las últimas líneas N de un archivo de texto con números de línea en orden inverso -- shell campo con unix camp codereview Relacionados El problema

Display the last N lines of a text file with line numbers in reverse order


3
vote

problema

Español

¿Crees que la forma en que lo estoy haciendo está bien? ¿Es esta la forma más típica de hacerlo? Comparte tus pensamientos por favor.

  # Display the last three lines of a text file with line numbers in reverse order # Can come quite in handy when reading log file entries cat -n [FILE] | tac | head --lines=3   

Prueba:

  # Let's create a text file to test our command against cat > test.txt  # Copy and paste these lines into the terminal window and press Ctrl+D to let # the shell know that we're done entering our stuff house car boy cat lake sea laptop rain  # Run the command cat -n test.txt | tac | head --lines=3  # Brief description: # cat -n test.txt | - Pipe the output with line numbers to the tac command # tac |             - Reverse the order and pipe along to the head command # head --lines=3    - Display only the first three lines  # Output:      8  rain      7  laptop      6  sea  # The number next to the first line in our output (8  rain) should be equal to # the number of lines in the entire file. We can check that using the word count # utility: wc -l test.txt  # Output (It's 8 too. Looks like the test passes): 8 test.txt   
Original en ingles

Do you think the way I'm doing it is fine? Is this the most typical way to do it? Share your thoughts please.

# Display the last three lines of a text file with line numbers in reverse order # Can come quite in handy when reading log file entries cat -n [FILE] | tac | head --lines=3 

Test:

# Let's create a text file to test our command against cat > test.txt  # Copy and paste these lines into the terminal window and press Ctrl+D to let # the shell know that we're done entering our stuff house car boy cat lake sea laptop rain  # Run the command cat -n test.txt | tac | head --lines=3  # Brief description: # cat -n test.txt | - Pipe the output with line numbers to the tac command # tac |             - Reverse the order and pipe along to the head command # head --lines=3    - Display only the first three lines  # Output:      8  rain      7  laptop      6  sea  # The number next to the first line in our output (8  rain) should be equal to # the number of lines in the entire file. We can check that using the word count # utility: wc -l test.txt  # Output (It's 8 too. Looks like the test passes): 8 test.txt 
     

Lista de respuestas

2
 
vote
vote
La mejor respuesta
 

cat -n es un tipo de patrón anti. El comando cat9 es para mostrar el contenido, agregar la numeración de línea es una violación del principio de responsabilidad única.

Session["Allow"]0 no es portátil. Aunque es bastante común en Linux, no tanto en UNIX como OSX.

en lugar de Session["Allow"]1 Es más común usar el formulario más corto Session["Allow"]2 .

No entiendo por qué querría ver las últimas n líneas revertidas . Si la inversión no es importante, entonces una alternativa portátil para imprimir las últimas líneas n con números de línea podría estar usando Session["Allow"]3 y Session["Allow"]4 :

  Session["Allow"]5  

Podrías escribir todo en AWK, y también revertir las líneas. Será más largo para escribir, pero portátil, y se resolvió en un solo proceso en lugar de una tubería de múltiples comandos.

 

cat -n is kind of an anti pattern. The cat command is for displaying the content, adding line numbering is a violation of the single responsibility principle.

tac is not portable. Although it's quite common in Linux, not so much in UNIX and osx.

Instead of head --lines=3 it's more common to use the shorter form head -n 3.

I don't quite get why you would want to see the last n lines reversed. If reversing is not important, then a portable alternative to print the last n lines with line numbers could be using awk and tail:

awk '{ print NR ":" $0 }' file | tail -n 3 

You could write the whole thing in Awk, and also reverse the lines. It will be longer to write, but portable, and solved in a single process rather than a pipeline of multiple commands.

 
 
   
   

Relacionados problema

7  Patrón Pseudoportable C Script - Seguimiento  ( Pseudoportable c script pattern follow up ) 
Consulte la iteración inicial / anterior . He reescrito el script siguiendo la respuesta de @ 200_success . Ahora se ve así: #! /bin/bash # Create a...

3  Aplicación singularidad e IPC unilateral en UNIX  ( Application uniqueness and unilateral ipc on unix ) 
este programa Detecta la singularidad de la aplicación, si la aplicación es una instancia única / primaria, lanza un servidor, de lo contrario, un cliente...

5  Portabilidad y "Rincón oscuro" Gotchas en este programa "WatchDog"  ( Portability and dark corner gotchas in this watchdog program ) 
El siguiente programa está destinado a "vigilando" un proceso secundario, y todos los subprocesos, el niño engendra . El comportamiento previsto es: Un ...

5  Programa de coincidencia y listado de PathName  ( Pathname matching and listing program ) 
Este programa Python 3 emite una lista de todos los nombres de ruta en el sistema de archivos que coincide con una lista de reglas tomadas de un archivo. Pued...

9  Plataforma independiente donde la función  ( Platform independent whereis function ) 
Estoy tratando de escribir un paquete independiente de Python (& gt; = 3.6.5) que tiene un puñado de archivos de clase Java. Clase que necesitan compilarse us...

1  ¿Cómo puedo optimizar aún más este script Perl para encontrar todos los archivos y directorios sin reconocimiento en UNIX?  ( How can i further optimize this perl script for finding all unowned files and di ) 
(originalmente publicado en Desbordamiento de pila ) Siguiendo mis hallazgos y sugerencias en mi otra publicación Cómo excluir una lista de rutas de dir...

3  Línea de comando FFMPEG para mostrar dos videos lado a lado  ( Ffmpeg command line for showing two videos side by side ) 
Aquí está la línea de comandos para jugar dos videos de lado a lado en sincronización en FFMPEG (FFPlay). Puede ser útil para los videos de comado, por ejempl...

1  Fortuna de UNIX V7 implementado en Java  ( Fortune of unix v7 implemented in java ) 
Estoy aprendiendo a Java recientemente, este es uno de mi primer programa escrito en este idioma. Reimplementación de una versión básica de Fortune . Esta ...

4  Find-grep-sed para la búsqueda de proyectos y reemplazar  ( Find grep sed for project wide search replace ) 
Siempre olvido cómo hacer esto de manera eficiente con el Arglista de VIM. Inspiración de dibujo en una publicación en Desbordamiento de la pila , escribí un...

4  Huffman que codifica como Utilidad de la línea de comandos de estilo UNIX  ( Huffman encoding as unix style command line utility ) 
Después de ver a Tom Scott explicar Huffman codificando en este video youtube , quería Implementalo yo mismo. Quiero usar este proyecto para promover mi comp...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos