首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取STDOUT第n行的命令

获取STDOUT第n行的命令
EN

Stack Overflow用户
提问于 2009-09-15 20:53:10
回答 12查看 195.5K关注 0票数 246

有没有什么bash命令可以让你得到STDOUT的第n行?

这就是说,一些需要这个的东西

代码语言:javascript
运行
复制
$ 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

然后做一些像这样的事情

代码语言:javascript
运行
复制
$ ls -l | magic-command 2
-rw-r--r--@ 1 root  wheel files.txt

我意识到当编写要重用的脚本时,这将是一种糟糕的做法,但在日常使用shell时,能够以这种方式过滤我的STDOUT对我来说很有用。

我也意识到这将是半简单的命令(buffer STDOUT,返回特定行),但是我想知道是否有一些标准 shell命令可以完成这一任务,而无需我将脚本拖入适当的位置。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2009-09-15 21:06:12

使用sed,只是为了多样化:

代码语言:javascript
运行
复制
ls -l | sed -n 2p

使用此替代方案看起来更有效,因为它在打印所需行时停止读取输入,可能会在进给过程中生成SIGPIPE,这可能会生成不需要的错误消息:

代码语言:javascript
运行
复制
ls -l | sed -n -e '2{p;q}'

我经常看到这种情况,所以我通常使用第一个(无论如何,它更容易输入),尽管ls不是一个当它获得SIGPIPE时会抱怨的命令。

对于一系列行:

代码语言:javascript
运行
复制
ls -l | sed -n 2,4p

对于多个行范围:

代码语言:javascript
运行
复制
ls -l | sed -n -e 2,4p -e 20,30p
ls -l | sed -n -e '2,4p;20,30p'
票数 375
EN

Stack Overflow用户

发布于 2009-09-15 20:54:19

代码语言:javascript
运行
复制
ls -l | head -2 | tail -1
票数 101
EN

Stack Overflow用户

发布于 2009-09-15 21:00:48

除了漂亮的头部/尾部方式之外:

代码语言:javascript
运行
复制
ls -al | awk 'NR==2'

代码语言:javascript
运行
复制
ls -al | sed -n '2p'
票数 49
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1429556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档