有没有什么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对我来说很有用。
我也意识到这将是半简单的命令(buffer STDOUT,返回特定行),但是我想知道是否有一些标准 shell命令可以完成这一任务,而无需我将脚本拖入适当的位置。
发布于 2009-09-15 21:06:12
使用sed,只是为了多样化:
ls -l | sed -n 2p使用此替代方案看起来更有效,因为它在打印所需行时停止读取输入,可能会在进给过程中生成SIGPIPE,这可能会生成不需要的错误消息:
ls -l | sed -n -e '2{p;q}'我经常看到这种情况,所以我通常使用第一个(无论如何,它更容易输入),尽管ls不是一个当它获得SIGPIPE时会抱怨的命令。
对于一系列行:
ls -l | sed -n 2,4p对于多个行范围:
ls -l | sed -n -e 2,4p -e 20,30p
ls -l | sed -n -e '2,4p;20,30p'发布于 2009-09-15 20:54:19
ls -l | head -2 | tail -1发布于 2009-09-15 21:00:48
除了漂亮的头部/尾部方式之外:
ls -al | awk 'NR==2'或
ls -al | sed -n '2p'https://stackoverflow.com/questions/1429556
复制相似问题