写在前面
-
难度:简单
题目
给定一个文本文件 file.txt,请只打印这个文件中的第十行。
示例:
假设 file.txt 有如下内容:
Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10 你的脚本应当显示第十行:
Line 10 说明:
- 如果文件少于十行,你应当输出什么?
- 至少有三种不同的解法,请尝试尽可能多的方法来解题。
思路 tail head
head可以看文件的前10行,再倒排得到第一行就能得到第十行了。 但是如果文件少于10行,这样子得到的是最后一行的信息,而不是第十行,题目这点没有说清楚,但从测试的结果看,如果没有第十行就应该显示为空才对的。
所以基于这个前提以下这个解法是错的。
[root@wuxianfeng74 home]# head file.txt |tail -1
9
[root@wuxianfeng74 home]# cat file.txt
1
2
3
4
5
6
7
8
9
那应该怎么做呢?应该用tail -n +10 结合head来做
测试1
[root@wuxianfeng74 home]# tail -n +10 file.txt |head -1
10
[root@wuxianfeng74 home]# cat file.txt
1
2
3
4
5
6
7
8
9
10
11
测试2
[root@wuxianfeng74 home]# tail -n +10 file.txt |head -1
[root@wuxianfeng74 home]# cat file.txt
1
2
3
4
5
6
7
8
9
思路2 awk或sed的方法
awk 'NR==10' file.txt
sed -n '10p' file.txt
sed和awk是在linux 工作的话一定要去进阶学习的工具,shell利器