第十行

标签: None

难度: Easy

给定一个文本文件 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

说明:
1. 如果文件少于十行,你应当输出什么?
2. 至少有三种不同的解法,请尝试尽可能多的方法来解题。

Submission

运行时间: 8 ms

内存: 3.5 MB

sed -n 10p file.txt

Explain

这个解法使用 sed 命令直接打印文件的第 10 行。sed 是一个流编辑器,可以对文本进行过滤和转换。-n 参数表示不自动打印,10p 表示打印第 10 行。

时间复杂度: O(n)

空间复杂度: O(1)

# 使用 sed 命令打印文件 file.txt 的第 10 行
sed -n 10p file.txt

Explore

`-n`参数在sed命令中用于禁止自动打印,这意味着sed默认的行为是处理输入并将其打印到标准输出,但当使用`-n`时,只有明确指定的行会被打印。`10p`则是一个命令组合,其中`10`指定了行号,`p`是打印指令,用于打印当前模式空间的内容,即在这里特指第10行。总结来说,`-n`避免了所有行被默认打印,而`10p`指定只打印第10行的内容。

如果文件行数少于10行,使用`sed -n 10p file.txt`命令将不会有任何输出。因为`sed`尝试打印第10行,但是由于它不存在,没有任何内容可以被打印。

除了使用sed,还有其他几种方法可以用来打印文件的第10行: 1. **awk**: 使用`awk 'NR == 10' file.txt`可以达到相同的效果。在这里,`NR`是awk内置的记录号变量,当`NR`等于10时,该行将被打印。 2. **head和tail组合**: 首先使用`head -10 file.txt`取前10行,然后用`tail -1`从这些行中取最后一行,即第10行。完整命令是`head -10 file.txt | tail -1`。 3. **Python脚本**: 可以编写一个简单的Python脚本来读取并打印文件的第10行。例如: python with open('file.txt', 'r') as file: lines = file.readlines() if len(lines) >= 10: print(lines[9]) # 因为Python的索引从0开始