There are any number of ways to print out a specific line number from a file. The
sed way above is one. Here are a few more:
Code:
inputfile=yourfile.txt
lineno=10
awk "NR==$lineno" "$inputfile"
echo "${lineno}p" | ed -s "$inputfile"
cut -d $'\n' -f "$lineno" <"$inputfile"
head -n "$lineno" "$inputfile" | tail -n 1
mapfile -t -O 1 lines <"$inputfile"
echo "${lines[lineno]}"
n=1
while read line; do
case $n in
$lineno) echo "$line" && break ;;
*) : $(( n++ )) && continue ;;
esac
done <"$inputfile"
The last two are pure shell versions.
mapfile requires bash v.4+ and is not recommended for large files (since the contents get stored in RAM), but is otherwise an efficient solution.
The
cut solution uses ansi-c style quoting to set the delimiter to newline. This is only available in modern shells like bash or ksh. You can use a literal newline instead if portability is a concern.