首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从shell管道中获取倒数第二行

从shell管道中获取倒数第二行
EN

Stack Overflow用户
提问于 2011-11-30 14:27:14
回答 4查看 6.6K关注 0票数 0

我想从ls -l输出中获得倒数第二行。我知道ls -l|tail -n 2| head -n 1可以做到这一点,只是想知道sed是否可以在一个命令中做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-30 14:37:52

代码语言:javascript
运行
复制
ls -l|sed -n 'x;$p'

它不能倒数第三,因为sed只有1个保留空间,所以只能记住一个更老的行。由于它一次处理一行,因此在处理它时不知道该行将是倒数第二行。awk可以返回thrid到最后,因为你可以有任意数量的变量,但是脚本会比tail -n X|head -n 1长得多。

票数 2
EN

Stack Overflow用户

发布于 2011-11-30 14:41:56

在awk一行程序中:

代码语言:javascript
运行
复制
echo -e "aaa\nbbb\nccc\nddd" | awk '{v[c++]=$0}END{print v[c-2]}'
ccc
票数 1
EN

Stack Overflow用户

发布于 2011-11-30 14:45:26

尝试此操作以删除文件中倒数第二行

代码语言:javascript
运行
复制
sed -e '$!{h;d;}' -e x filename
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8321955

复制
相关文章

相似问题

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