【LeetCode 简单题】48-打印第10行

声明:

今天是第48道题。给定一个文本文件 file.txt,写一个 bash 脚本输出第10行。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除

(手动比心ღ( ´・ᴗ・` ))

正文

题目:给定一个文本文件 file.txt,写一个 bash 脚本输出第10行。

假设 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. 至少有三种不同的解法,请尝试尽可能多的方法来解题。

解法1。使用awk命令,对file.txt文件,判断行数为第10行时打印出来,耗时8 ms, 在Tenth Line的Bash提交中击败了97.35% 的用户,代码如下。

  • NR:表示行数。已经读出的记录数,就是行号,从1开始  
  • NF:当前记录中的字段个数,就是有多少列  
  • $0:表示当前记录,所以我们可以用if来判断行数为第10行时,将内容打印出来即可:
awk 'if(NR==10) print $0' file.txt

# 简洁版
awk 'NR==10' file.txt

解法2。使用sed命令,耗时12 ms, 在Tenth Line的Bash提交中击败了31.20% 的用户,代码如下。

  • -n:不输出模式空间内容到屏幕,即不自动打印
  • p:限定具体打印的行数
sed -n 10p file.txt

 解法3。用head和tail来做,耗时12 ms, 在Tenth Line的Bash提交中击败了31.20% 的用户,代码如下。

  • head -n 3 file.txt: 打印file文件的前3行
  • head -n -3 file.txt: 打印file文件除了最后三行的所有内容
  • tail -n 3 file.txt: 打印file文件的最后3行内容      
  • tail -n +3 file.txt: 从file文件第3行开始打印所有内容
  • |:为管道命令
# 先取前10行,再取第10行即最后1行,利用了管道:|
head -n 10 file.txt | tail -n +10

# 先取第10行开始以后的行,再取第1行,利用了管道:|
tail -n +10 file.txt | head -n 1

结尾

解法1、解法2、解法3:http://www.cnblogs.com/grandyang/p/5376902.html

猜你喜欢

转载自blog.csdn.net/weixin_41011942/article/details/83239927