我想从ls -l
输出中得到第二行。
我知道
ls -l|tail -n 2| head -n 1
可以做到这一点,只是想知道sed
是否可以只用一个命令来做到这一点?
答案 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
- 但也涉及管道