91966


`head`や`tail`コマンドでファイルの一部を表示したとき、「表示されなかった行が何行あるか」を一緒に表示できないでしょうか。

`file.txt`が以下の内容としたとき

[code]

    aaa
    bbb
    ccc
    ddd
    eee
    
[/code]

このように表示されると嬉しいです

[code]

    $ head -n 3 file.txt
    
    aaa
    bbb
    ccc
    (2lines omitted)
    
[/code]

よろしくお願いいたします。


CC BY-SA 4.0
2022-11-03T03:44:13.013
91961
2022-11-03T12:30:48.163
50949
question
bash
bashのheadやtailで省略された行数を一緒に表示する


awkを使うのはいかがでしょうか？

[code]

    awk -v N=3 'NR <= N{print} END {if(NR-N>0)printf("(%dlines omitted)\n",
    NR-N)}' file.txt
    
[/code]

指定行数Nに達するまで`NR <= N{print}`内容を表示し、最後に残り行数を表示します。


CC BY-SA 4.0
2022-11-03T09:06:26.627
91966
2022-11-03T09:06:26.627
35558
91961
answer

[code]

    $ sed --version
    sed (GNU sed) 4.8
    
    $ cat file.txt | { sed -u '3q'; printf '(%d lines omitted)\n' $(wc -l); }
    aaa
    bbb
    ccc
    (2 lines omitted)
    
    $ seq 100 | { sed -u '3q'; printf '(%d lines omitted)\n' $(wc -l); }
    1
    2
    3
    (97 lines omitted)
    
[/code]


CC BY-SA 4.0
2022-11-03T11:22:47.660
91967
2022-11-03T11:22:47.660
47127
91961
answer


複雑なことをやれば既に回答されているように **一緒に表示** することはできますが、分けて扱えばもっと簡単に済ませられます。

`wc`コマンドを使えばファイルの行数を表示してくれます。

[code]

    $ wc -l file.txt
    5 file.txt
    $ wc -l < file.txt
    5
    
[/code]


CC BY-SA 4.0
2022-11-03T12:30:48.163
91970
2022-11-03T12:30:48.163
4236
91961
answer