Existe uma maneira de usar o tail para que ele conte o número de linhas sem usar o cat?

0

Eu vou compartilhar um exemplo, então faz sentido -

[$] cat /boot/config-4.9.0-1-amd64 | tail

  7856  CONFIG_FONT_SUPPORT=y
  7857  # CONFIG_FONTS is not set
  7858  CONFIG_FONT_8x8=y
  7859  CONFIG_FONT_8x16=y
  7860  # CONFIG_SG_SPLIT is not set
  7861  CONFIG_SG_POOL=y
  7862  CONFIG_ARCH_HAS_SG_CHAIN=y
  7863  CONFIG_ARCH_HAS_PMEM_API=y
  7864  CONFIG_ARCH_HAS_MMIO_FLUSH=y
  7865  CONFIG_SBITMAP=y

A saída é o que eu quero sem usar cat, o gato aqui é aliado para -

[$] alias cat

cat='cat -n'

Usar tail -n só é bom se eu quiser ter mais linhas incluídas na cauda.

Como eu faço uma lista de cauda que mostra números de linha real sem recorrer ao gato, existe uma maneira?

    
por shirish 29.01.2017 / 20:39

2 respostas

6

cat -n para quem odeia gatos:

  • Com o GNU sed :

    sed = file.txt | sed 'N;s/\n/\t/' | tail
    
  • com awk :

     awk '{ $0 = NR "\t" $0 } 1' file.txt | tail
    
  • Com grep e GNU sed :

    grep -n ^ file.txt | sed 's/:/\t/' | tail
    
  • com perl :

    perl -lpe '$_ = qq($.\t$_)' | tail
    

    ou

    perl -pe 'print "$.\t"' file.txt | tail
    
  • Com bash , paste e seq :

    paste <(seq 1 $(wc -l <file.txt)) file.txt | tail
    
  • com pr :

    pr -n -t -l 1 file.txt | tail
    
  • Com% normalsh:

    let cnt=0
    while read -r line; do
        let cnt\+\+
        printf '%d\t%s\n' $cnt "$line"
    done <file.txt | tail
    
  • com vim :

    :%s/^/\=line('.')."\t"/ | $-10,$y | new | P
    
por 29.01.2017 / 20:52
1

Você verificou o utilitário nl (parte do coreutils presente por padrão na maioria distros)? É isso que você está procurando?

$ tail /boot/config-4.9.0-1-amd64 |nl 
# Or even nl <(tail /boot/config-4.9.0-1-amd64)

     1  CONFIG_FONT_SUPPORT=y
     2  # CONFIG_FONTS is not set
     3  CONFIG_FONT_8x8=y
     4  CONFIG_FONT_8x16=y
     5  # CONFIG_SG_SPLIT is not set
     6  CONFIG_SG_POOL=y
     7  CONFIG_ARCH_HAS_SG_CHAIN=y
     8  CONFIG_ARCH_HAS_PMEM_API=y
     9  CONFIG_ARCH_HAS_MMIO_FLUSH=y
    10  CONFIG_SBITMAP=y

nl pode fornecer muitas opções interessantes de numeração, como número inicial, aumento do número, etc.

Para simular a numeração de cat, use apenas nl /boot/config-4.9.0-1-amd64 |tail

    
por 29.01.2017 / 21:08

Tags