有没有办法在使用 tail 时让它告诉行数而不使用 cat ?

有没有办法在使用 tail 时让它告诉行数而不使用 cat ?

我将分享一个例子,这样它就有意义了 -

[$] 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

输出是我想要的而不使用 cat ,这里的 cat 别名为 -

[$] alias cat

cat='cat -n'

tail -n仅当我想在尾部包含更多行数时,使用才有效。

如何在不诉诸 cat 的情况下显示实线数字的尾部列表,有办法吗?

答案1

cat -n对于讨厌猫的人:

  • 使用 GNU sed

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

     awk '{ $0 = NR "\t" $0 } 1' file.txt | tail
    
  • grepGNU sed

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

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

    或者

    perl -pe 'print "$.\t"' file.txt | tail
    
  • bash,pasteseq:

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

    pr -n -t -l 1 file.txt | tail
    
  • 简单地说sh

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

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

答案2

你检查过了吗荷兰实用程序(大多数发行版中默认存在 coreutils 的一部分)?这是你想要的?

$ 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 可以提供很多有趣的编号选项,比如起始编号、编号递增步长等

要模拟猫编号,只需使用nl /boot/config-4.9.0-1-amd64 |tail

相关内容