来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/tenth-line
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
一、题目描述
给定一个文本文件 file.txt,请只打印这个文件中的第十行。
示例:
假设 file.txt 有如下内容:
1 2 3 4 5 6 7 8 9 10 |
Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10 |
你的脚本应当显示第十行:
1 |
Line 10 |
说明:
- 如果文件少于十行,你应当输出什么?
- 至少有三种不同的解法,请尝试尽可能多的方法来解题。
二、题解
2.1 tail+head
返回文本中的第十行,最简单的方式可以通过tail + head
配合输出,通过head
取到前面10行,然后输出前面10行的最后一行。很容易能想到的办法:
1 |
head -10 file.txt | tail -1 |
但这么做就错了,题目中已经提到如果文件少于10行,你应当输出什么?。一旦文件少于10行,上面的命令会输出文件的最后一行,不满足题意。正确的命令:
1 |
tail -n +10 file.txt | head -1 |
-n +10
表示从第10行开始到结束,意思是先从第10行开始取到结束的所有数据然后取第一行。
2.2 sed
sed的p模式可以直接打印指定行:
1 |
sed -n '10p' file.txt |
2.3 awk
awk内置变量NR
表示行数
1 |
awk 'NR==10' file.txt |
评论