Description

Given a text file file.txt, print just the 10th line of the file.

Example:

Assume that file.txt has the following content:

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10

Your script should output the tenth line, which is:

Line 10

Note: \1. If the file contains less than 10 lines, what should you output? \2. There’s at least three different solutions. Try to explore all possibilities.

Solutions

1. Awk

# awk
awk 'FNR == 10 {print }'  file.txt
# or
awk 'NR==10' file.txt
# 7/7 cases passed (0 ms)
# Your runtime beats 100 % of bash submissions
# Your memory usage beats 85.71 % of bash submissions (3.7 MB)

2. Sed

sed -n '10p' file.txt
# 7/7 cases passed (4 ms)
# Your runtime beats 73.92 % of bash submissions
# Your memory usage beats 100 % of bash submissions (3.6 MB)

3. Script

cnt=0
while read line && [ $cnt -le 10 ]; do
  let 'cnt = cnt + 1'
  if [ $cnt -eq 10 ]; then
    echo $line
    exit 0
  fi
done < file.txt
# 7/7 cases passed (4 ms)
# Your runtime beats 73.92 % of bash submissions
# Your memory usage beats 100 % of bash submissions (3.6 MB)

4. Tail

tail -n+10 file.txt|head -1
# 7/7 cases passed (4 ms)
# Your runtime beats 73.92 % of bash submissions
# Your memory usage beats 52.38 % of bash submissions (3.7 MB)

References

  1. 195. Tenth Line