在Linux下处理日志文件时,经常需要定位到某一行。比如一个长达几万行的.log文件,想看第40行到底写了什么。这时候你会怎么干?用vim打开再翻半天?其实一条命令就能精准命中——把head和tail组合起来用。
思路很直接:先用head拿到前N行,然后把这个结果通过管道传给tail,只取最后一行,那刚好就是原始文件的第N行。来看实际指令:
head -n 40 2017_08_28.log | tail -n 1
演示一下效果。假设我们先跑head -n 40,看看前40行都有什么:

可以看到,前40行的最后一条记录是“右键点击重命名”。接着再执行完整命令,用tail取这40条中的最后一行:
结果完全一致,正是我们想要的那一行。这套配合虽然简单,但在快速排查日志、提取配置文件某行参数时,比打开编辑器高效得多。
如果文件特别大,想取第900行呢?换个方向:先用tail取文件末尾的100行,再用head取第一行,同样能定位到目标行。思路是对称的,核心就是利用管道让两个命令各自干活,一个负责截断,一个负责挑出那一行。掌握了这个套路,以后在终端里查某一行数据,基本就不需要手动翻页了。
