是否有任何bash命令可以让您获得STDOUT的第n行?

也就是说,需要这个

$ ls -l
-rw-r--r--@ 1 root  wheel my.txt
-rw-r--r--@ 1 root  wheel files.txt
-rw-r--r--@ 1 root  wheel here.txt

做一些像这样的事情

$ ls -l | magic-command 2
-rw-r--r--@ 1 root  wheel files.txt

我意识到,当编写要重用的脚本时,这将是一个糟糕的实践,但是当每天使用shell时,能够以这种方式过滤我的STDOUT对我来说是有用的。

我也意识到这将是一个非常简单的命令(缓冲区STDOUT,返回一个特定的行),但是我想知道是否有一些标准的shell命令来执行此操作,而无需我放置脚本。


当前回答

ls -l | head -2 | tail -1

其他回答

为了更完整..

ls -l | (for ((x=0;x<2;x++)) ; do read ; done ; head -n1)

在你看到第二行之前,先把行扔掉,然后打印出第一行。它打印第三行。

如果只是第二行…

ls -l | (read; head -n1)

写必要的“阅读”。

可以选择正面/反面的方式:

ls -al | awk 'NR==2'

or

ls -al | sed -n '2p'

Perl对您来说容易获得吗?

$ perl -n -e 'if ($. == 7) { print; exit(0); }'

显然,用任何你想用的数字来代替7。

为了完整起见;-)

较短的代码

find / | awk NR==3

缩短人的寿命

find / | awk 'NR==3 {print $0; exit}'
ls -l | head -2 | tail -1