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
    
  • 그리고 bash, paste그리고 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

관련 정보