Command to get nth line of STDOUT

前端 未结 12 1767
闹比i
闹比i 2020-12-07 07:39

Is there any bash command that will let you get the nth line of STDOUT?

That is to say, something that would take this

$ ls -l
-rw-r--r--@ 1 root  wh         


        
12条回答
  •  自闭症患者
    2020-12-07 07:56

    Using sed, just for variety:

    ls -l | sed -n 2p
    

    Using this alternative, which looks more efficient since it stops reading the input when the required line is printed, may generate a SIGPIPE in the feeding process, which may in turn generate an unwanted error message:

    ls -l | sed -n -e '2{p;q}'
    

    I've seen that often enough that I usually use the first (which is easier to type, anyway), though ls is not a command that complains when it gets SIGPIPE.

    For a range of lines:

    ls -l | sed -n 2,4p
    

    For several ranges of lines:

    ls -l | sed -n -e 2,4p -e 20,30p
    ls -l | sed -n -e '2,4p;20,30p'
    

提交回复
热议问题