catを使用せずにtailを使用するときに行数を知らせる方法はありますか?

catを使用せずにtailを使用するときに行数を知らせる方法はありますか?

わかりやすいように例を共有します。

[$] 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最後により多くの行を含めたい場合にのみを使用してください。

猫を使わずにソリッド数字の末尾のリストを表示するにはどうすればよいですか?方法はありますか?

答え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
    
  • そしてbashpasteそしてseq

    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

関連情報