Shell 打印文件的最后5行
经常查看日志的时候,会从文件的末尾往前查看,于是请你写一个 bash脚本以输出一个文本文件 nowcoder.txt中的最后5行
示例:
假设 nowcoder.txt 内容如下:
#include<iostream>
using namespace std;
int main()
{
int a = 10;
int b = 100;
cout << "a + b:" << a + b << endl;
return 0;
}
你的脚本应当输出:
int a = 10;
int b = 100;
cout << "a + b:" << a + b << endl;
return 0;
}
题解-awk
首先想到awk,用于处理文件的格式化输出
awk里可以通过内置变量NR获得总行数,NR-4 就获取到了最后4行的开头,然后再循环输出就行了。
但是NR获取总行数是在最后所有数据都处理完毕了,所以我们在处理每一行的时候需要把数据存储起来。
awk '{arg[NR]=$0} END{for(i=NR-4;i<=NR;i++) print arg[i]}'
题解-tail
tail -5 nowcoder.txt
tail -n5 nowcoder.txt