从shell管道获取第二行

时间:2011-11-30 06:27:14

标签: shell

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

4 个答案:

答案 0 :(得分:2)

ls -l|sed -n 'x;$p'

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

答案 1 :(得分:1)

在awk单行中:

echo -e "aaa\nbbb\nccc\nddd" | awk '{v[c++]=$0}END{print v[c-2]}'
ccc

答案 2 :(得分:0)

尝试此操作删除文件

中的倒数第二行
sed -e '$!{h;d;}' -e x filename

答案 3 :(得分:0)

tac filename | sed -n 2p

- 但也涉及管道