【发布时间】:2020-04-06 10:21:10
【问题描述】:
从一些不同长度的输出顶部删除 3 行(或其他)行的最简单的全局 shell 方法是什么?我意识到只有知道文档长度有多长,tail 才会起作用。
示例:假设我们要处理它,但排除它的输出的前 2 行
$ curl -s http://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
这里很有趣的是python解决方案
$ curl -s http://google.com | python -c "import sys; [sys.stdout.write(line) for line in list(sys.stdin)[2:]]" | sort
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
<H1>301 Moved</H1>
The document has moved
以这种方式扩展你的外壳
$ function from() {
> python -c "import sys; [sys.stdout.write(line) for line in list(sys.stdin)[${1}:]]"
> }
用任意数量的行来做到这一点
$ curl -s http://google.com | from 3 | sort
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
【问题讨论】:
-
如果您想自行回答您的问题,您应该单独发布答案,而不是作为问题的一部分。但是,这是一个很好回答的副本 (stackoverflow.com/q/339483/3266847),如果您觉得它丢失了,您可能应该在此处添加您的答案。
-
对于不只是第一行,而是任意行数的问题:stackoverflow.com/q/604864/3266847(但它与我在上面发布的那个重复)
-
@Benjamin W. Ahhhh 就是这样。我只是为了好玩而做 python 的事情。我很高兴答案不在 awk 中 :-)