你会如何在bash中实现这一目标.这是我在面试中被问到的一个问题,我可以用高级语言来思考答案,但不能用shell来思考答案.
据我了解,tail的真正实现寻求到文件的末尾,然后向后读.
主要思想是保持固定大小的缓冲区并记住最后一行.这是使用shell做尾部的快速方法:
#!/bin/bash
SIZE=5
idx=0
while read line
do
arr[$idx]=$line
idx=$(( ( idx + 1 ) % SIZE ))
done < text
for ((i=0; i<SIZE; i++))
do
echo ${arr[$idx]}
idx=$(( ( idx + 1 ) % SIZE ))
done
Run Code Online (Sandbox Code Playgroud)
如果允许所有not-tail命令,为什么不是异想天开?
#!/bin/sh
[ -r "$1" ] && exec < "$1"
tac | head | tac
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1751 次 |
| 最近记录: |