[bash] How do I read the first line of a file using cat?

How do I read the first line of a file using cat?

This question is related to bash file-io cat

The answer is


There is plenty of good answer to this question. Just gonna drop another one into the basket if you wish to do it with lolcat

lolcat FileName.csv | head -n 1

You could use cat file.txt | head -1, but it would probably be better to use head directly, as in head -1 file.txt.


There are many different ways:

sed -n 1p file
head -n 1 file
awk 'NR==1' file

This may not be possible with cat. Is there a reason you have to use cat?

If you simply need to do it with a bash command, this should work for you:

head -n 1 file.txt

Use the below command to get the first row from a CSV file or any file formats.

head -1 FileName.csv

cat alone may not be possible, but if you don't want to use head this works:

 cat <file> | awk 'NR == 1'

I'm surprised that this question has been around as long as it has, and nobody has provided the pre-mapfile built-in approach yet.

IFS= read -r first_line <file

...puts the first line of the file in the variable expanded by "$first_line", easy as that.

Moreover, because read is built into bash and this usage requires no subshell, it's significantly more efficient than approaches involving subprocesses such as head or awk.


You don't, use head instead.

head -n 1 file.txt

Adding one more obnoxious alternative to the list:

perl -pe'$.<=1||last' file
# or 
perl -pe'$.<=1||last' < file
# or
cat file | perl -pe'$.<=1||last'

You dont need any external command if you have bash v4+

< file.txt mapfile -n1 && echo ${MAPFILE[0]}

or if you really want cat

cat file.txt | mapfile -n1 && echo ${MAPFILE[0]}

:)