要使用 sed 打印文件的倒数第 N 行,可以使用以下几种方法。这里我们以 N 行为例(即从文件末尾向前数 N 行)。
方法 1:使用 sed 的 + 和 N 表达式
sed -n '$(($(wc -l < file) - N))p' file
wc -l < file:统计文件行数。$((...)):计算倒数第 N 行(即总行数 - N + 1)。-n:禁止自动打印。p:打印行。
方法 2:使用 sed 的 + 和 N 表达式(更简洁)
sed -n '$(($(wc -l < file) - 1))p' file
$(wc -l < file):计算文件行数。$(wc -l < file) - 1:得到倒数第 1 行。p:打印该行。
方法 3:使用 tail 和 head(更直观)
tail -n +$(wc -l < file) file
wc -l < file:计算文件行数。+$(...):从第总行数 + 1行开始打印。tail:从指定行开始打印。
方法 4:使用 head 和 tail 的组合(适用于多行)
head -n $(($(wc -l < file) - 1)) file | tail -n 1
$(wc -l < file) - 1:得到倒数第 1 行。head -n ...:打印该行。tail -n 1:打印最后一行(即倒数第 1 行)。
总结
| 方法 | 说明 | 适用场景 |
|---|---|---|
sed -n '$(($(wc -l < file) - N))p' file |
通用,适用于任意 N | 任意行数 |
sed -n '$(($(wc -l < file) - 1))p' file |
倒数第 1 行 | 任意行数 |
tail -n +$(wc -l < file) file |
倒数第 1 行 | 任意行数 |
head -n $(wc -l < file) -1 file |
倒数第 1 行 | 任意行数 |
示例
假设文件 test.txt 内容如下:
Line 1
Line 2
Line 3
Line 4
Line 5
- 倒数第 3 行是:
Line 3 - 倒数第 1 行是:
Line 1
如需打印其他行数(如倒数第 2 行、第 4 行等),只需调整 N 的值即可。
如需进一步优化或结合其他工具(如 awk、grep),也可以告诉我,我会为你提供更合适的方案。
